chunks.hpp
Go to the documentation of this file.
1
2#pragma once
3
5
6namespace by {
7
12 class _nout chunks: public allocator {
13 BY_ME(chunks, allocator)
14 BY_INIT_META(me)
15
16 public:
17 // chunks:
18 explicit chunks(ncnt blkbyte = 0);
19 virtual ~chunks();
20
21 public:
22 chunk& operator[](nidx n);
23 const chunk& operator[](nidx n) const BY_CONST_FUNC(operator[](n));
24 chunk& operator[](const instance& it);
25 const chunk& operator[](const instance& it) const BY_CONST_FUNC(operator[](it));
26
27 public:
28 // chunks:
29 chunk* get(nidx n);
30 chunk* get(const instance& it);
31 chunk* get(const instance* it) BY_SIDE_FUNC(get);
32 const chunk* get(nidx n) const BY_CONST_FUNC(get(n))
33 const chunk* get(const instance& it) const BY_CONST_FUNC(get(it))
34 const chunk* get(const instance* it) const BY_CONST_FUNC(get(it))
35
36 // allocator:
37 void* new1() override;
38 nbool del(void* pt, ncnt sz) override;
42 virtual nbool resize(ncnt new1);
43
44 using super::has;
45 nbool has(const instance& it) const override;
46
47 ncnt len() const override;
48 ncnt size() const override;
49 nbool rel() override;
50
51 private:
52 // chunks:
53 nidx _findCapable();
54 nbool _rel();
55 // MemoryHaver:
56 void* _get(nidx n) override;
57
58 std::vector<chunk*> _chunks;
59 int _s;
60 };
61} // namespace by
Abstract allocator interface for memory management.
Definition: allocator.hpp:12
Memory chunk for block-based allocation.
Definition: chunk.hpp:12
Collection of memory chunks for scalable allocation.
Definition: chunks.hpp:12
virtual nbool resize(ncnt new1)
Base class for all managed instances in memlite system.
Definition: instance.hpp:20