54 , m_current_buffer_size(0)
60 : m_buffer_size(buf_size)
61 , m_current_buffer_size(0)
69 : m_buffer_size(ref.m_buffer_size)
70 , m_current_buffer_size(0)
77 _freeAllocatedBuffers();
88 m_buffer_size = ref.m_buffer_size;
96 if (!m_current_buffer)
97 _allocateCurrentBuffer();
98 T* v = &(*m_current_buffer)[m_nb_in_buffer];
100 if (m_nb_in_buffer == m_current_buffer_size)
101 m_current_buffer = 0;
110 if (n > m_current_buffer_size) {
111 BufferType* bt =
new BufferType(n);
112 m_allocated_buffers.add(bt);
115 if (!m_current_buffer)
116 _allocateCurrentBuffer();
119 if ((m_nb_in_buffer + n) >= m_current_buffer_size)
120 _allocateCurrentBuffer();
121 T* v = &(*m_current_buffer)[m_nb_in_buffer];
123 if (m_nb_in_buffer == m_current_buffer_size)
124 m_current_buffer = 0;
130 m_current_buffer = 0;
131 m_current_buffer_size = 0;
132 _freeAllocatedBuffers();
134 Integer nbAllocatedBuffer() {
return m_allocated_buffers.size(); }
135 Integer bufferSize()
const {
return m_current_buffer_size; }
139 void _freeAllocatedBuffers()
141 for (
Integer i = 0, s = m_allocated_buffers.size(); i < s; ++i)
142 delete m_allocated_buffers[i];
143 m_allocated_buffers.clear();
151 BufferType* m_current_buffer;
152 UniqueArray<BufferType*> m_allocated_buffers;
155 void _allocateCurrentBuffer()
157 m_current_buffer =
new BufferType(m_buffer_size);
158 m_current_buffer_size = m_buffer_size;
159 m_allocated_buffers.add(m_current_buffer);