unsigned char *BStream_readDataOfLength_(BStream *self, size_t length) { if (self->index + length <= ByteArray_size(self->ba)) { unsigned char *b = ByteArray_bytes(self->ba) + self->index; self->index += length; return b; } return NULL; }
uint8_t BStream_readUint8(BStream *self) { if (self->index < ByteArray_size(self->ba)) { unsigned char b = ByteArray_bytes(self->ba)[self->index]; self->index ++; return b; } return 0; }
void BStream_readNumber_size_(BStream *self, unsigned char *v, int size) { if (self->index + size <= ByteArray_size(self->ba)) { unsigned char *b = ByteArray_bytes(self->ba); memcpy(v, b + self->index, size); if (self->flipEndian) { reverseBytes(v, size); } self->index += size; return; } while (size--) { *v = 0; v ++; } }
int BStream_isEmpty(BStream *self) { return ByteArray_size(self->ba) == 0; }
int BStream_atEnd(BStream *self) { return self->index >= ByteArray_size(self->ba); }
void BStream_writeTaggedByteArray_(BStream *self, ByteArray *ba) { BStream_writeTaggedData_length_(self, ByteArray_bytes(ba), ByteArray_size(ba)); }
void BStream_writeByteArray_(BStream *self, ByteArray *ba) { BStream_writeInt32_(self, ByteArray_size(ba)); ByteArray_append_(self->ba, ba); self->index += ByteArray_size(ba); }
/*----------------------------------------------------------------------------- * return size of current section *----------------------------------------------------------------------------*/ int get_section_size( Section *section ) { init_module(); return ByteArray_size( section->bytes ); }