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 {
38 BY_INIT_META(me)
39
40 public:
41 // chunks:
42 explicit chunks(ncnt blkbyte = 0);
43 virtual ~chunks();
44
45 public:
46 chunk& operator[](nidx n);
47 const chunk& operator[](nidx n) const BY_CONST_FUNC(operator[](n));
48 chunk& operator[](const instance& it);
49 const chunk& operator[](const instance& it) const BY_CONST_FUNC(operator[](it));
50
51 public:
52 // chunks:
53 chunk* get(nidx n);
54 chunk* get(const instance& it);
55 chunk* get(const instance* it) BY_SIDE_FUNC(get);
56 const chunk* get(nidx n) const BY_CONST_FUNC(get(n))
57 const chunk* get(const instance& it) const BY_CONST_FUNC(get(it))
58 const chunk* get(const instance* it) const BY_CONST_FUNC(get(it))
59
60 // allocator:
61 void* new1() override;
62 nbool del(void* pt, ncnt sz) override;
63
69 virtual nbool resize(ncnt new1);
70
71 using super::has;
77 nbool has(const instance& it) const override;
78
79 ncnt len() const override;
80 ncnt size() const override;
81 nbool rel() override;
82
83 private:
84 // chunks:
85 nidx _findCapable();
86 nbool _rel();
87 // MemoryHaver:
88 void* _get(nidx n) override;
89
90 private:
91 std::vector<chunk*> _chunks;
92 int _s;
93 };
94} // 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