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

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

MARK: Dynamic workflow graph developement. Branch up to date with trunk @1676. Arithmetic filter unified

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