Lugdunum  0.1.0
IArea.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <lug/System/Export.hpp>
4 
5 namespace lug {
6 namespace System {
7 namespace Memory {
8 namespace Area {
9 
10 // A memory page where `end` is included (i.e. `end` is the last byte in the page)
11 // The areas have to set `prev` to the previous page's address and `next` to `nullptr` before returning a `Page`
13  void* start{nullptr};
14  void* end{nullptr};
15 
16  Page* prev{nullptr};
17  Page* next{nullptr};
18 };
19 
21 public:
22  IArea() = default;
23  IArea(const IArea&) = delete;
24  IArea(IArea&&) = delete;
25 
26  IArea& operator=(const IArea&) = delete;
27  IArea& operator=(IArea&&) = delete;
28 
29  virtual ~IArea() = default;
30 
31  virtual Page* requestNextPage() = 0;
32 };
33 
34 } // Area
35 } // Memory
36 } // System
37 } // lug
#define LUG_SYSTEM_API
Definition: Export.hpp:11