Faro Engine 0.0.0.b519570 (main)
Loading...
Searching...
No Matches
ObjectTracker.hpp
Go to the documentation of this file.
1#ifndef OBJECTTRACKER_HEADER
2#define OBJECTTRACKER_HEADER
3#include "../Containers/String.hpp"
4#include "../Containers/Map.hpp"
5#include "../Math/MathUtil.hpp"
6
7namespace Faro
8{
10 {
11 public:
12 template<class T>
13 void AddCount()
14 {
15 std::string class_name = typeid(T).name();
16 if(!objects.Contains(class_name))
17 {
18 objects.Add(class_name, 0);
19 }
20
21 objects[class_name]++;
22 }
23
24 template<class T>
26 {
27 std::string class_name = typeid(T).name();
28 if (objects.Contains(class_name))
29 {
30 objects[class_name]--;
31 if (objects[class_name] == 0) objects.Remove(class_name);
32 }
33 }
34
35 inline String Report()
36 {
37 Array<String> names;
38 uint16 widest = 0;
39
40 String out;
41 for(String& name : objects.GetKeys())
42 {
43 if (objects[name] != 0)
44 {
45 names.Add(name);
46 widest = Max(widest, (uint16)name.Length());
47 }
48 }
49
50 for (String& name : names)
51 {
52 String out_name = name;
53 out_name.FillToWidth(widest + 2);
54 out += out_name + " " + ToString(objects[name]) + "\n";
55 }
56
57 return out;
58 }
59
60 private:
61 Map<String, uint32> objects;
62 };
63}
64
65#endif
Definition Array.hpp:11
void Add(const T &object)
Definition Array.hpp:26
Definition ObjectTracker.hpp:10
String Report()
Definition ObjectTracker.hpp:35
void RemoveCount()
Definition ObjectTracker.hpp:25
void AddCount()
Definition ObjectTracker.hpp:13
Definition Map.hpp:9
Definition String.hpp:12
void FillToWidth(uint32 width, char fill=' ')
Definition String.hpp:45
Definition Array.hpp:8
String ToString(T value)
Definition String.hpp:157
uint16_t uint16
Definition Primitives.hpp:9
T Max(T a, T b)
Definition MathUtil.hpp:26