19 #ifndef MIR_VARIABLE_LENGTH_ARRAY_H_
20 #define MIR_VARIABLE_LENGTH_ARRAY_H_
22 #include <sys/types.h>
28 template <
size_t BuiltInBufferSize>
40 if (size > BuiltInBufferSize)
41 effective_buffer = BufferUPtr{
new unsigned char[
size], heap_deleter};
43 effective_buffer = BufferUPtr{builtin_buffer, null_deleter};
48 unsigned char*
data()
const {
return effective_buffer.get(); }
49 size_t size()
const {
return size_; }
52 typedef std::unique_ptr<unsigned char,void (*)(unsigned char*)> BufferUPtr;
54 static void null_deleter(
unsigned char*) {}
55 static void heap_deleter(
unsigned char* b) {
delete[] b; }
57 unsigned char builtin_buffer[BuiltInBufferSize];
58 BufferUPtr effective_buffer{builtin_buffer, null_deleter};
All things Mir.
Definition: buffer_stream.h:37
size_t size() const
Definition: variable_length_array.h:49
VariableLengthArray(size_t size)
Definition: variable_length_array.h:32
unsigned char * data() const
Definition: variable_length_array.h:48
Definition: variable_length_array.h:29
void resize(size_t size)
Definition: variable_length_array.h:38