source: XIOS/dev/dev_trunk_omp/src/filter/garbage_collector.cpp @ 1679

Last change on this file since 1679 was 1679, checked in by yushan, 5 years ago

MARK: Dynamic workflow graph developement. Branch up to date with trunk @1676. Using vis.js

File size: 1.3 KB
Line 
1#include "garbage_collector.hpp"
2
3namespace xios
4{
5  int InvalidableObject::filterIdGenerator = 0;
6  #pragma omp threadprivate(InvalidableObject::filterIdGenerator)
7
8  int InvalidableObject::edgeIdGenerator = 0;
9  #pragma omp threadprivate(InvalidableObject::edgeIdGenerator)
10 
11  void CGarbageCollector::registerObject(InvalidableObject* Object, Time timestamp)
12  {
13    registeredObjects[timestamp].insert(Object);
14  }
15
16  void CGarbageCollector::unregisterObject(InvalidableObject* Object, Time timestamp)
17  {
18    std::map<Time, std::set<InvalidableObject*> >::iterator it = registeredObjects.find(timestamp);
19    if (it != registeredObjects.end())
20      it->second.erase(Object);
21  }
22
23  void CGarbageCollector::invalidate(Time timestamp)
24  {
25    std::map<Time, std::set<InvalidableObject*> >::iterator it    = registeredObjects.begin(),
26                                                            itEnd = registeredObjects.lower_bound(timestamp);
27    for (; it != itEnd; ++it)
28    {
29      std::set<InvalidableObject*>::iterator itObject    = it->second.begin(),
30                                             itObjectEnd = it->second.end();
31      for (; itObject != itObjectEnd; ++itObject)
32        (*itObject)->invalidate(timestamp);
33    }
34    registeredObjects.erase(registeredObjects.begin(), itEnd);
35  }
36} // namespace xios
Note: See TracBrowser for help on using the repository browser.