Loading...
Searching...
No Matches
chunks.hpp
Go to the documentation of this file.
1
2#pragma once
3
5
6namespace by {
7
36 class _nout chunks: public allocator {
37 BY(ME(chunks, allocator))
38
39 public:
40 // chunks:
41 explicit chunks(ncnt blkbyte = 0);
42 virtual ~chunks();
43
44 public:
45 chunk& operator[](nidx n);
46 const chunk& operator[](nidx n) const BY_CONST_FUNC(operator[](n));
47 chunk& operator[](const instance& it);
48 const chunk& operator[](const instance& it) const BY_CONST_FUNC(operator[](it));
49
50 public:
51 // chunks:
52 chunk* get(nidx n);
53 chunk* get(const instance& it);
54 chunk* get(const instance* it) BY_SIDE_FUNC(get);
55 const chunk* get(nidx n) const BY_CONST_FUNC(get(n))
56 const chunk* get(const instance& it) const BY_CONST_FUNC(get(it))
57 const chunk* get(const instance* it) const BY_CONST_FUNC(get(it))
58
59 // allocator:
60 void* new1() override;
61 nbool del(void* pt, ncnt sz) override;
62
68 virtual nbool resize(ncnt new1);
69
70 using super::has;
76 nbool has(const instance& it) const override;
77
78 ncnt len() const override;
79 ncnt size() const override;
80 nbool rel() override;
81
82 private:
83 // chunks:
84 nidx _findCapable();
85 nbool _rel();
86 // MemoryHaver:
87 void* _get(nidx n) override;
88
89 private:
90 std::vector<chunk*> _chunks;
91 int _s;
92 };
93} // namespace by
Abstract allocator interface for memory management.
Definition allocator.hpp:21
Memory chunk for block-based allocation.
Definition chunk.hpp:57
Collection of memory chunks for scalable allocation.
Definition chunks.hpp:36
virtual nbool resize(ncnt new1)
nbool has(const instance &it) const override
Checks if any of the managed chunks contain the memory allocated for the given instance.
Base class for all managed instances in memlite system.
Definition instance.hpp:41
Rich logging support with polymorphic type conversion.
Definition richLog.hpp:34