EventAnalysis  1.0.0
RemovedObjectsTracker.h
Go to the documentation of this file.
1 /*
2  * RemovedObjectsTracker.h
3  *
4  * Created on: 14 Feb 2020
5  * Author: Nicola Mori
6  */
7 
10 #ifndef REMOVEDOBJECTSTRACKER_H_
11 #define REMOVEDOBJECTSTRACKER_H_
12 
13 #include "core/ObserverPtr.h"
14 #include "data/ObjectProducer.h"
15 #include "utils/Memory.h"
16 
17 namespace EA {
18 
26 public:
36  bool TrackObject(const std::string &name, const observer_ptr<ObjectProducer> &producer);
37 
44  void RemoveObject(const std::string &name);
45 
54  void UntrackObject(const std::string &name);
55 
66  bool FreeRemoved(Memory::Status memStatus);
67 
73  void Clean();
74 
75 protected:
76  struct ProducerHandler {
78  std::vector<std::string> addedObjects;
79  std::vector<std::string> toBeFreed;
80  };
81  std::vector<ProducerHandler> _producerHandlers;
82 };
83 
84 } // namespace EA
85 #endif /* REMOVEDOBJECTSTRACKER_H_ */
A tracker class for data objects.
Definition: RemovedObjectsTracker.h:25
observer_ptr< ObjectProducer > producer
Definition: RemovedObjectsTracker.h:77
std::vector< std::string > toBeFreed
Definition: RemovedObjectsTracker.h:79
A smart pointer not owning the wrapped object.
Definition: ObserverPtr.h:28
bool FreeRemoved(Memory::Status memStatus)
Releases the memory allocated for removed objects.
Definition: RemovedObjectsTracker.cpp:67
void RemoveObject(const std::string &name)
Flags an object as removed.
Definition: RemovedObjectsTracker.cpp:56
std::vector< std::string > addedObjects
Definition: RemovedObjectsTracker.h:78
IncludeFileExc.h IncludeFileExc class declaration.
Definition: Algorithm.h:21
void UntrackObject(const std::string &name)
Remove an object from the list of tracked objects.
Definition: RemovedObjectsTracker.cpp:32
void Clean()
Empties the list of tracked objects and producers.
Definition: RemovedObjectsTracker.cpp:82
Definition: RemovedObjectsTracker.h:76
bool TrackObject(const std::string &name, const observer_ptr< ObjectProducer > &producer)
Adds an object and its producer to the tracked objects list.
Definition: RemovedObjectsTracker.cpp:12
Status
Aliases for memory occupation levels.
Definition: Memory.h:23
std::vector< ProducerHandler > _producerHandlers
Definition: RemovedObjectsTracker.h:81