CPP-TOOLBOX
Loading...
Searching...
No Matches
fixed_size_array_tracker.hpp
Go to the documentation of this file.
1#ifndef FIXED_SIZE_ARRAY_TRACKER_HPP
2#define FIXED_SIZE_ARRAY_TRACKER_HPP
3
4#include <unordered_map>
5#include <set>
6#include <optional>
7#include <iostream>
8
10 public:
11 FixedSizeArrayTracker(unsigned int size, bool logging_enabled = false);
12
13 void log(const std::string &message) const;
14 double get_usage_percentage() const;
15
16 std::optional<unsigned int> find_contiguous_space(unsigned int length);
17 bool add_metadata(int id, unsigned int start, unsigned int length);
18 void remove_metadata(int id);
19 std::optional<std::pair<unsigned int, unsigned int>> get_metadata(int id) const;
20
21 void compact();
22
23 const std::unordered_map<int, std::pair<unsigned int, unsigned int>> &get_all_metadata() const;
24 friend std::ostream &operator<<(std::ostream &os, const FixedSizeArrayTracker &tracker);
25
26 private:
27 unsigned int size;
28 bool logging_enabled;
29 std::unordered_map<int, std::pair<unsigned int, unsigned int>> metadata; // id -> {start, length}
30 std::set<std::pair<unsigned int, unsigned int>> occupied_intervals; // sorted intervals of occupied spaces
31};
32
33#endif // FIXED_SIZE_ARRAY_TRACKER_HPP
const std::unordered_map< int, std::pair< unsigned int, unsigned int > > & get_all_metadata() const
Definition fixed_size_array_tracker.cpp:117
void log(const std::string &message) const
Definition fixed_size_array_tracker.cpp:8
void compact()
Definition fixed_size_array_tracker.cpp:95
std::optional< std::pair< unsigned int, unsigned int > > get_metadata(int id) const
Definition fixed_size_array_tracker.cpp:87
bool add_metadata(int id, unsigned int start, unsigned int length)
Definition fixed_size_array_tracker.cpp:44
void remove_metadata(int id)
Definition fixed_size_array_tracker.cpp:73
FixedSizeArrayTracker(unsigned int size, bool logging_enabled=false)
Definition fixed_size_array_tracker.cpp:5
friend std::ostream & operator<<(std::ostream &os, const FixedSizeArrayTracker &tracker)
Definition fixed_size_array_tracker.cpp:121
std::optional< unsigned int > find_contiguous_space(unsigned int length)
Definition fixed_size_array_tracker.cpp:25
double get_usage_percentage() const
Definition fixed_size_array_tracker.cpp:16