92 int init(
size_t max_size,
size_t align = 0);
99 int init(dynarray
const& to_copy,
size_t max_size = 0);
109 size_t capacity()
const {
118 int resize(
size_t new_size);
131 int ensure_capacity(
size_t min_size);
137 size_t size()
const {
145 operator char const*()
const {
149 dynarray() : _base(0),
155 dynarray(dynarray
const& other);
157 dynarray& operator=(dynarray
const& other);
176 int init(
size_t max_count) {
177 return _arr.init(count2bytes(max_count));
186 for (
size_t i = 0; i < _size; i++) {
197 size_t limit()
const {
198 return bytes2count(_arr.capacity());
204 size_t capacity()
const {
205 return bytes2count(_arr.size());
211 size_t size()
const {
224 int reserve(
size_t new_capacity) {
225 return _arr.ensure_capacity(count2bytes(new_capacity));
232 int resize(
size_t new_size) {
233 if (
int err = reserve(new_size)) {
237 for (
size_t i = size(); i < new_size; i++) {
249 int push_back(
T const& obj) {
250 size_t new_size = _size + 1;
251 if (
int err = reserve(new_size)) {
255 new(_at(_size).c)
T(obj);
261 return this->operator[](size() - 1);
264 T const& back()
const {
265 return this->operator[](size() - 1);
271 T& operator[](
size_t i) {
275 T const& operator[](
size_t i)
const {
279 dynvector() : _size(0),
290 static size_t count2bytes(
size_t count) {
291 return count *
sizeof(
T);
294 static size_t bytes2count(
size_t bytes) {
295 return bytes /
sizeof(
T);
298 ptr _at(
size_t idx)
const {
299 ptr rval = {_arr + count2bytes(idx)};
306 size_t _align_offset;
311 #endif // __DYNARRAY_H #define T
Definition: w_okvl_inl.h:45