Functions | |
UIndex | ur_makeBinary (UThread *ut, int size) |
Generate and initialize a single binary buffer. | |
UBuffer * | ur_makeBinaryCell (UThread *ut, int size, UCell *cell) |
Generate a single binary and set cell to reference it. | |
void | ur_binInit (UBuffer *buf, int size) |
Initialize buffer to type UT_BINARY. | |
void | ur_binFree (UBuffer *buf) |
Free binary data. | |
void | ur_binReserve (UBuffer *buf, int size) |
Allocates enough memory to hold size bytes. | |
void | ur_binErase (UBuffer *buf, int start, int count) |
Remove bytes from the binary. | |
void | ur_binExpand (UBuffer *buf, int index, int count) |
Create space in the binary for count bytes starting at index. | |
void | ur_binAppendData (UBuffer *buf, const uint8_t *data, int len) |
Append data to binary buffer. | |
void | ur_binAppendArray (UBuffer *buf, const USeriesIter *si) |
Append array slice to binary buffer. | |
const char * | ur_binAppendBase (UBuffer *buf, const char *it, const char *end, enum UrlanBinaryEncoding enc) |
Append encoded ASCII string to binary buffer. | |
void | ur_binSlice (UThread *ut, UBinaryIter *bi, const UCell *cell) |
Set UBinaryIter to binary slice. | |
int | ur_binSliceM (UThread *ut, UBinaryIterM *bi, const UCell *cell) |
Set UBinaryIterM to binary slice. | |
void | ur_binToStr (UBuffer *buf, int encoding) |
Convert binary buffer to string buffer. |
void ur_binAppendArray | ( | UBuffer * | buf, | |
const USeriesIter * | si | |||
) |
Append array slice to binary buffer.
buf | Initialized binary buffer. | |
si | Data to append. si.buf->elemSize must be valid. |
const char* ur_binAppendBase | ( | UBuffer * | buf, | |
const char * | it, | |||
const char * | end, | |||
enum UrlanBinaryEncoding | enc | |||
) |
Append encoded ASCII string to binary buffer.
buf | Initialized binary buffer. | |
it | Start of string | |
end | End of string | |
enc | Encoding of string. |
void ur_binAppendData | ( | UBuffer * | buf, | |
const uint8_t * | data, | |||
int | len | |||
) |
Append data to binary buffer.
buf | Initialized binary buffer. | |
data | Data to append. | |
len | Number of bytes from data to append. |
void ur_binErase | ( | UBuffer * | buf, | |
int | start, | |||
int | count | |||
) |
Remove bytes from the binary.
buf | Initialized binary buffer. | |
start | Start index of erase. | |
count | Number of bytes to remove. |
void ur_binExpand | ( | UBuffer * | buf, | |
int | index, | |||
int | count | |||
) |
Create space in the binary for count bytes starting at index.
The memory in the new space is uninitialized.
buf | Initialized binary buffer. | |
index | Position to expand at. | |
count | Number of bytes to expand. |
void ur_binFree | ( | UBuffer * | buf | ) |
Free binary data.
buf->ptr and buf->used are set to zero.
void ur_binInit | ( | UBuffer * | buf, | |
int | size | |||
) |
Initialize buffer to type UT_BINARY.
size | Number of bytes to reserve. |
void ur_binReserve | ( | UBuffer * | buf, | |
int | size | |||
) |
Allocates enough memory to hold size bytes.
buf->used is not changed.
buf | Initialized binary buffer. | |
size | Total number of bytes. |
Set UBinaryIter to binary slice.
bi | Iterator struct to fill. | |
cell | Pointer to a valid binary cell. |
Set UBinaryIterM to binary slice.
If cell references a binary in shared storage then an error is generated and UR_THROW is returned. Otherwise, bi is initialized. If the slice is empty then bi->it and bi->end are set to zero.
bi | Iterator struct to fill. | |
cell | Pointer to a valid binary cell. |
void ur_binToStr | ( | UBuffer * | buf, | |
int | encoding | |||
) |
Convert binary buffer to string buffer.
The data that buf->ptr points to is not touched.
buf | Initialized binary buffer. | |
encoding | Encoding |
UIndex ur_makeBinary | ( | UThread * | ut, | |
int | size | |||
) |
Generate and initialize a single binary buffer.
If you need multiple buffers then ur_genBuffers() should be used.
The caller must create a UCell for this block in a held block before the next ur_recycle() or else it will be garbage collected.
size | Number of bytes to reserve. |
Generate a single binary and set cell to reference it.
If you need multiple buffers then ur_genBuffers() should be used.
size | Number of bytes to reserve. | |
cell | Cell to initialize. |