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

Last change on this file since 1685 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
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  int InvalidableObject::clusterIdGenerator = 0;
12  #pragma omp threadprivate(InvalidableObject::clusterIdGenerator)
13 
14  void CGarbageCollector::registerObject(InvalidableObject* Object, Time timestamp)
15  {
16    registeredObjects[timestamp].insert(Object);
17  }
18
19  void CGarbageCollector::unregisterObject(InvalidableObject* Object, Time timestamp)
20  {
21    std::map<Time, std::set<InvalidableObject*> >::iterator it = registeredObjects.find(timestamp);
22    if (it != registeredObjects.end())
23      it->second.erase(Object);
24  }
25
26  void CGarbageCollector::invalidate(Time timestamp)
27  {
28    std::map<Time, std::set<InvalidableObject*> >::iterator it    = registeredObjects.begin(),
29                                                            itEnd = registeredObjects.lower_bound(timestamp);
30    for (; it != itEnd; ++it)
31    {
32      std::set<InvalidableObject*>::iterator itObject    = it->second.begin(),
33                                             itObjectEnd = it->second.end();
34      for (; itObject != itObjectEnd; ++itObject)
35        (*itObject)->invalidate(timestamp);
36    }
37    registeredObjects.erase(registeredObjects.begin(), itEnd);
38  }
39} // namespace xios
Note: See TracBrowser for help on using the repository browser.