dynamic_buffer.h v0.2.2
Reference-counted byte buffer library for efficient I/O operations
Loading...
Searching...
No Matches
Typedefs | Functions
Buffer Builder API

Functions for building buffers with primitive types. More...

Typedefs

typedef struct db_builder_internal * db_builder
 Opaque builder handle for constructing buffers efficiently.
 

Functions

DB_DEF db_builder db_builder_new (size_t initial_capacity)
 Create a new buffer builder.
 
DB_DEF db_builder db_builder_from_buffer (db_buffer buf)
 Create builder from existing buffer (continues at end)
 
DB_DEF db_builder db_builder_retain (db_builder builder)
 Increase builder reference count (share ownership)
 
DB_DEF void db_builder_release (db_builder *builder_ptr)
 Decrease builder reference count and potentially free builder.
 
DB_DEF db_buffer db_builder_finish (db_builder *builder_ptr)
 Finalize builder and return the constructed buffer.
 
DB_DEF size_t db_builder_size (db_builder builder)
 Get current write position in builder.
 
DB_DEF size_t db_builder_capacity (db_builder builder)
 Get current capacity of builder.
 
DB_DEF void db_builder_clear (db_builder builder)
 Clear builder contents.
 
DB_DEF int db_builder_append_uint8 (db_builder builder, uint8_t value)
 Write uint8 value.
 
DB_DEF int db_builder_append_uint16_le (db_builder builder, uint16_t value)
 Write uint16 value in little-endian format.
 
DB_DEF int db_builder_append_uint16_be (db_builder builder, uint16_t value)
 Write uint16 value in big-endian format.
 
DB_DEF int db_builder_append_uint32_le (db_builder builder, uint32_t value)
 Write uint32 value in little-endian format.
 
DB_DEF int db_builder_append_uint32_be (db_builder builder, uint32_t value)
 Write uint32 value in big-endian format.
 
DB_DEF int db_builder_append_uint64_le (db_builder builder, uint64_t value)
 Write uint64 value in little-endian format.
 
DB_DEF int db_builder_append_uint64_be (db_builder builder, uint64_t value)
 Write uint64 value in big-endian format.
 
DB_DEF int db_builder_append (db_builder builder, const void *data, size_t size)
 Write raw bytes.
 
DB_DEF int db_builder_append_cstring (db_builder builder, const char *str)
 Write null-terminated string (without null terminator)
 
DB_DEF int db_builder_append_buffer (db_builder builder, db_buffer buf)
 Append buffer contents.
 

Detailed Description

Functions for building buffers with primitive types.

Typedef Documentation

◆ db_builder

typedef struct db_builder_internal* db_builder

Opaque builder handle for constructing buffers efficiently.

Function Documentation

◆ db_builder_append()

DB_DEF int db_builder_append ( db_builder  builder,
const void *  data,
size_t  size 
)

Write raw bytes.

Parameters
builderBuilder instance
dataData to write
sizeNumber of bytes to write
Returns
0 on success, -1 on error

◆ db_builder_append_buffer()

DB_DEF int db_builder_append_buffer ( db_builder  builder,
db_buffer  buf 
)

Append buffer contents.

Parameters
builderBuilder instance
bufBuffer to append
Returns
0 on success, -1 on error

◆ db_builder_append_cstring()

DB_DEF int db_builder_append_cstring ( db_builder  builder,
const char *  str 
)

Write null-terminated string (without null terminator)

Parameters
builderBuilder instance
strString to write
Returns
0 on success, -1 on error

◆ db_builder_append_uint16_be()

DB_DEF int db_builder_append_uint16_be ( db_builder  builder,
uint16_t  value 
)

Write uint16 value in big-endian format.

Parameters
builderBuilder instance
valueValue to write
Returns
0 on success, -1 on error

◆ db_builder_append_uint16_le()

DB_DEF int db_builder_append_uint16_le ( db_builder  builder,
uint16_t  value 
)

Write uint16 value in little-endian format.

Parameters
builderBuilder instance
valueValue to write
Returns
0 on success, -1 on error

◆ db_builder_append_uint32_be()

DB_DEF int db_builder_append_uint32_be ( db_builder  builder,
uint32_t  value 
)

Write uint32 value in big-endian format.

Parameters
builderBuilder instance
valueValue to write
Returns
0 on success, -1 on error

◆ db_builder_append_uint32_le()

DB_DEF int db_builder_append_uint32_le ( db_builder  builder,
uint32_t  value 
)

Write uint32 value in little-endian format.

Parameters
builderBuilder instance
valueValue to write
Returns
0 on success, -1 on error

◆ db_builder_append_uint64_be()

DB_DEF int db_builder_append_uint64_be ( db_builder  builder,
uint64_t  value 
)

Write uint64 value in big-endian format.

Parameters
builderBuilder instance
valueValue to write
Returns
0 on success, -1 on error

◆ db_builder_append_uint64_le()

DB_DEF int db_builder_append_uint64_le ( db_builder  builder,
uint64_t  value 
)

Write uint64 value in little-endian format.

Parameters
builderBuilder instance
valueValue to write
Returns
0 on success, -1 on error

◆ db_builder_append_uint8()

DB_DEF int db_builder_append_uint8 ( db_builder  builder,
uint8_t  value 
)

Write uint8 value.

Parameters
builderBuilder instance
valueValue to write
Returns
0 on success, -1 on error

◆ db_builder_capacity()

DB_DEF size_t db_builder_capacity ( db_builder  builder)

Get current capacity of builder.

Parameters
builderBuilder instance
Returns
Current capacity in bytes

◆ db_builder_clear()

DB_DEF void db_builder_clear ( db_builder  builder)

Clear builder contents.

Parameters
builderBuilder instance

◆ db_builder_finish()

DB_DEF db_buffer db_builder_finish ( db_builder builder_ptr)

Finalize builder and return the constructed buffer.

Parameters
builder_ptrPointer to builder (will be set to NULL)
Returns
Constructed buffer

◆ db_builder_from_buffer()

DB_DEF db_builder db_builder_from_buffer ( db_buffer  buf)

Create builder from existing buffer (continues at end)

Parameters
bufBuffer to extend
Returns
New builder instance

◆ db_builder_new()

DB_DEF db_builder db_builder_new ( size_t  initial_capacity)

Create a new buffer builder.

Parameters
initial_capacityInitial capacity in bytes
Returns
New builder instance
Example:
db_builder builder = db_builder_new(64);
db_builder_append_uint16_le(builder, 0x1234);
db_builder_append_cstring(builder, "Hello");
db_buffer buf = db_builder_finish(&builder); // builder becomes NULL
printf("Built buffer with %zu bytes\n", db_size(buf));
db_release(&buf);
char * db_buffer
Buffer handle - points directly to buffer data.
Definition dynamic_buffer.h:173
DB_DEF size_t db_size(db_buffer buf)
Get current size of buffer in bytes.
DB_DEF db_buffer db_builder_finish(db_builder *builder_ptr)
Finalize builder and return the constructed buffer.
DB_DEF db_builder db_builder_new(size_t initial_capacity)
Create a new buffer builder.
struct db_builder_internal * db_builder
Opaque builder handle for constructing buffers efficiently.
Definition dynamic_buffer.h:462
DB_DEF int db_builder_append_uint16_le(db_builder builder, uint16_t value)
Write uint16 value in little-endian format.
DB_DEF int db_builder_append_cstring(db_builder builder, const char *str)
Write null-terminated string (without null terminator)
DB_DEF void db_release(db_buffer *buf_ptr)
Decrease reference count and potentially free buffer.

◆ db_builder_release()

DB_DEF void db_builder_release ( db_builder builder_ptr)

Decrease builder reference count and potentially free builder.

Parameters
builder_ptrPointer to builder variable (will be set to NULL)

◆ db_builder_retain()

DB_DEF db_builder db_builder_retain ( db_builder  builder)

Increase builder reference count (share ownership)

Parameters
builderBuilder to retain (must not be NULL)
Returns
The same builder for convenience

◆ db_builder_size()

DB_DEF size_t db_builder_size ( db_builder  builder)

Get current write position in builder.

Parameters
builderBuilder instance
Returns
Current position in bytes