source: XIOS/dev/dev_trunk_graph/src/filter/pass_through_filter.cpp @ 2019

Last change on this file since 2019 was 2019, checked in by yushan, 3 years ago

Graph intermedia commit to a tmp branch

File size: 1.2 KB
Line 
1#include "pass_through_filter.hpp"
2#include "workflow_graph.hpp"
3#include <algorithm>
4
5namespace xios
6{
7  CPassThroughFilter::CPassThroughFilter(CGarbageCollector& gc)
8    : CFilter(gc, 1, this)
9  { /* Nothing to do */ }
10
11  CDataPacketPtr CPassThroughFilter::apply(std::vector<CDataPacketPtr> data)
12  {
13    buildWorkflowGraph(data);
14    return data[0];
15  }
16
17  void CPassThroughFilter::buildWorkflowGraph(std::vector<CDataPacketPtr> data)
18  {
19    if(this->graphEnabled)
20    {
21      this->graphPackage->filterId = CWorkflowGraph::getNodeSize();
22     
23      if(!data[0]->graphPackage) 
24      {
25        data[0]->graphPackage = new CGraphDataPackage;
26        data[0]->graphPackage->fromFilter = -1;
27      }
28         
29      data[0]->graphPackage->currentField = this->graphPackage->inFields[0];
30      std::rotate(this->graphPackage->inFields.begin(), this->graphPackage->inFields.begin() + 1, this->graphPackage->inFields.end());
31     
32      CWorkflowGraph::addNode("Pass through filter", 2, false, 1, data[0]);
33      CWorkflowGraph::addEdge(data[0]->graphPackage->fromFilter, this->graphPackage->filterId, data[0]);
34      data[0]->graphPackage->fromFilter = this->graphPackage->filterId;
35       
36    } 
37  }
38
39
40} // namespace xios
41
Note: See TracBrowser for help on using the repository browser.