Ignore:
Timestamp:
07/31/19 13:51:01 (5 years ago)
Author:
yushan
Message:

backup for trunk with graph

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/dev_olga/src/parse_expr/filter_expr_node.cpp

    r1577 r1686  
    1212 
    1313   
    14   std::shared_ptr<COutputPin> CFilterFieldExprNode::reduce(CGarbageCollector& gc, CField& thisField) const 
     14  std::shared_ptr<COutputPin> CFilterFieldExprNode::reduce(CGarbageCollector& gc, CField& thisField, Time start_graph, Time end_graph) const 
    1515  { 
    1616    std::shared_ptr<COutputPin> outputPin; 
     
    4040                << "Use the keyword \"this\" if you want to reference the input data sent to this field."); 
    4141 
    42         field->buildFilterGraph(gc, false); 
     42        // field->buildFilterGraph(gc, false); 
     43        field->buildFilterGraph(gc, false, start_graph, end_graph); 
    4344        outputPin = field->getInstantDataFilter(); 
    4445      } 
     
    5556 
    5657 
    57   std::shared_ptr<COutputPin> CFilterTemporalFieldExprNode::reduce(CGarbageCollector& gc, CField& thisField) const 
     58  std::shared_ptr<COutputPin> CFilterTemporalFieldExprNode::reduce(CGarbageCollector& gc, CField& thisField, Time start_graph, Time end_graph) const 
    5859  { 
    5960    std::shared_ptr<COutputPin> outputPin; 
     
    104105  } 
    105106 
    106   std::shared_ptr<COutputPin> CFilterUnaryOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const 
    107   { 
     107  std::shared_ptr<COutputPin> CFilterUnaryOpExprNode::reduce(CGarbageCollector& gc, CField& thisField, Time start_graph, Time end_graph) const 
     108  { 
     109    std::shared_ptr<COutputPin> ch = child->reduce(gc, thisField, start_graph, end_graph); 
     110 
    108111    std::shared_ptr<CUnaryArithmeticFilter> filter(new CUnaryArithmeticFilter(gc, opId)); 
    109     child->reduce(gc, thisField)->connectOutput(filter, 0); 
     112    ch->connectOutput(filter, 0); 
     113 
     114    (filter->parent_filters).resize(1); 
     115    (filter->parent_filters)[0] = ch; 
     116 
     117    filter->tag = ch->tag; 
     118    filter->start_graph = ch->start_graph; 
     119    filter->end_graph = ch->end_graph; 
     120    filter->field = &thisField; 
     121 
     122 
    110123    return filter; 
    111124  } 
     
    121134  } 
    122135 
    123   std::shared_ptr<COutputPin> CFilterScalarFieldOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const 
    124   { 
     136  std::shared_ptr<COutputPin> CFilterScalarFieldOpExprNode::reduce(CGarbageCollector& gc, CField& thisField, Time start_graph, Time end_graph) const 
     137  { 
     138    std::shared_ptr<COutputPin> ch2 = child2->reduce(gc, thisField, start_graph, end_graph); 
    125139    std::shared_ptr<CScalarFieldArithmeticFilter> filter(new CScalarFieldArithmeticFilter(gc, opId, child1->reduce())); 
    126     child2->reduce(gc, thisField)->connectOutput(filter, 0); 
     140    ch2->connectOutput(filter, 0); 
     141     
     142    (filter->parent_filters).resize(1); 
     143    (filter->parent_filters)[0] = ch2; 
     144 
     145    filter->tag = ch2->tag; 
     146    filter->start_graph = ch2->start_graph; 
     147    filter->end_graph = ch2->end_graph; 
     148    filter->field = &thisField; 
     149 
    127150    return filter; 
    128151  } 
     
    138161  } 
    139162 
    140   std::shared_ptr<COutputPin> CFilterFieldScalarOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const 
    141   { 
     163  std::shared_ptr<COutputPin> CFilterFieldScalarOpExprNode::reduce(CGarbageCollector& gc, CField& thisField, Time start_graph, Time end_graph) const 
     164  { 
     165    std::shared_ptr<COutputPin> ch1 = child1->reduce(gc, thisField, start_graph, end_graph); 
     166 
    142167    std::shared_ptr<CFieldScalarArithmeticFilter> filter(new CFieldScalarArithmeticFilter(gc, opId, child2->reduce())); 
    143     child1->reduce(gc, thisField)->connectOutput(filter, 0); 
     168    ch1->connectOutput(filter, 0); 
     169 
     170    (filter->parent_filters).resize(1); 
     171    (filter->parent_filters)[0] = ch1; 
     172 
     173    filter->tag = ch1->tag; 
     174    filter->start_graph = ch1->start_graph; 
     175    filter->end_graph = ch1->end_graph; 
     176    filter->field = &thisField; 
     177 
    144178    return filter; 
    145179  } 
     
    155189  } 
    156190 
    157   std::shared_ptr<COutputPin> CFilterFieldFieldOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const 
    158   { 
     191  std::shared_ptr<COutputPin> CFilterFieldFieldOpExprNode::reduce(CGarbageCollector& gc, CField& thisField, Time start_graph, Time end_graph) const 
     192  { 
     193    std::shared_ptr<COutputPin> ch1 = child1->reduce(gc, thisField, start_graph, end_graph); 
     194    std::shared_ptr<COutputPin> ch2 = child2->reduce(gc, thisField, start_graph, end_graph); 
     195 
    159196    std::shared_ptr<CFieldFieldArithmeticFilter> filter(new CFieldFieldArithmeticFilter(gc, opId)); 
    160     child1->reduce(gc, thisField)->connectOutput(filter, 0); 
    161     child2->reduce(gc, thisField)->connectOutput(filter, 1); 
     197    ch1->connectOutput(filter, 0); 
     198    ch2->connectOutput(filter, 1);  
     199 
     200    (filter->parent_filters).resize(2); 
     201    (filter->parent_filters)[0] = ch1; 
     202    (filter->parent_filters)[1] = ch2; 
     203 
     204    filter->tag = (ch1->tag || ch2->tag); 
     205    filter->start_graph = ch1->tag? ch1->start_graph : (ch2->tag? ch2->start_graph: -1); 
     206    filter->end_graph = ch1->tag? ch1->end_graph : (ch2->tag? ch2->end_graph: -1); 
     207 
     208    filter->field = &thisField; 
     209 
     210 
    162211    return filter; 
    163212  } 
     
    177226  } 
    178227 
    179   std::shared_ptr<COutputPin> CFilterScalarScalarFieldOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const 
    180   { 
     228  std::shared_ptr<COutputPin> CFilterScalarScalarFieldOpExprNode::reduce(CGarbageCollector& gc, CField& thisField, Time start_graph, Time end_graph) const 
     229  { 
     230    std::shared_ptr<COutputPin> ch3 = child3->reduce(gc, thisField, start_graph, end_graph); 
     231 
    181232    std::shared_ptr<CScalarScalarFieldArithmeticFilter> filter(new CScalarScalarFieldArithmeticFilter(gc, opId, child1->reduce(),child2->reduce())); 
    182     child3->reduce(gc, thisField)->connectOutput(filter, 0); 
     233    ch3->connectOutput(filter, 0); 
     234     
     235    (filter->parent_filters).resize(1); 
     236    (filter->parent_filters)[0] = ch3; 
     237 
     238    filter->tag = ch3->tag; 
     239    filter->start_graph = ch3->start_graph; 
     240    filter->end_graph = ch3->end_graph; 
     241    filter->field = &thisField; 
     242 
    183243    return filter; 
    184244  } 
     
    196256  } 
    197257 
    198   std::shared_ptr<COutputPin> CFilterScalarFieldScalarOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const 
    199   { 
     258  std::shared_ptr<COutputPin> CFilterScalarFieldScalarOpExprNode::reduce(CGarbageCollector& gc, CField& thisField, Time start_graph, Time end_graph) const 
     259  { 
     260    std::shared_ptr<COutputPin> ch2 = child2->reduce(gc, thisField, start_graph, end_graph); 
     261 
    200262    std::shared_ptr<CScalarFieldScalarArithmeticFilter> filter(new CScalarFieldScalarArithmeticFilter(gc, opId, child1->reduce(),child3->reduce())); 
    201     child2->reduce(gc, thisField)->connectOutput(filter, 0); 
     263    ch2->connectOutput(filter, 0); 
     264 
     265    (filter->parent_filters).resize(1); 
     266    (filter->parent_filters)[0] = ch2; 
     267 
     268    filter->tag = ch2->tag; 
     269    filter->start_graph = ch2->start_graph; 
     270    filter->end_graph = ch2->end_graph; 
     271    filter->field = &thisField; 
     272 
    202273    return filter; 
    203274  } 
     
    215286  } 
    216287 
    217   std::shared_ptr<COutputPin> CFilterScalarFieldFieldOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const 
    218   { 
     288  std::shared_ptr<COutputPin> CFilterScalarFieldFieldOpExprNode::reduce(CGarbageCollector& gc, CField& thisField, Time start_graph, Time end_graph) const 
     289  { 
     290    std::shared_ptr<COutputPin> ch2 = child2->reduce(gc, thisField, start_graph, end_graph); 
     291    std::shared_ptr<COutputPin> ch3 = child3->reduce(gc, thisField, start_graph, end_graph); 
     292 
    219293    std::shared_ptr<CScalarFieldFieldArithmeticFilter> filter(new CScalarFieldFieldArithmeticFilter(gc, opId, child1->reduce())); 
    220     child2->reduce(gc, thisField)->connectOutput(filter, 0); 
    221     child3->reduce(gc, thisField)->connectOutput(filter, 1); 
     294    ch2->connectOutput(filter, 0); 
     295    ch3->connectOutput(filter, 1); 
     296 
     297    (filter->parent_filters).resize(2); 
     298    (filter->parent_filters)[0] = ch2; 
     299    (filter->parent_filters)[1] = ch3; 
     300 
     301    filter->tag = (ch3->tag || ch2->tag); 
     302    filter->start_graph = ch3->tag? ch3->start_graph : (ch2->tag? ch2->start_graph: -1); 
     303    filter->end_graph = ch3->tag? ch3->end_graph : (ch2->tag? ch2->end_graph: -1); 
     304    filter->field = &thisField; 
     305 
    222306    return filter; 
    223307  } 
     
    236320  } 
    237321 
    238   std::shared_ptr<COutputPin> CFilterFieldScalarScalarOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const 
    239   { 
     322  std::shared_ptr<COutputPin> CFilterFieldScalarScalarOpExprNode::reduce(CGarbageCollector& gc, CField& thisField, Time start_graph, Time end_graph) const 
     323  { 
     324    std::shared_ptr<COutputPin> ch1 = child1->reduce(gc, thisField, start_graph, end_graph); 
     325 
    240326    std::shared_ptr<CFieldScalarScalarArithmeticFilter> filter(new CFieldScalarScalarArithmeticFilter(gc, opId, child2->reduce(),child3->reduce())); 
    241     child1->reduce(gc, thisField)->connectOutput(filter, 0); 
     327    ch1->connectOutput(filter, 0); 
     328 
     329    (filter->parent_filters).resize(1); 
     330    (filter->parent_filters)[0] = ch1; 
     331 
     332    filter->tag = ch1->tag; 
     333    filter->start_graph = ch1->start_graph; 
     334    filter->end_graph = ch1->end_graph; 
     335    filter->field = &thisField; 
     336 
    242337    return filter; 
    243338  } 
     
    256351  } 
    257352 
    258   std::shared_ptr<COutputPin> CFilterFieldScalarFieldOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const 
    259   { 
     353  std::shared_ptr<COutputPin> CFilterFieldScalarFieldOpExprNode::reduce(CGarbageCollector& gc, CField& thisField, Time start_graph, Time end_graph) const 
     354  { 
     355    std::shared_ptr<COutputPin> ch1 = child1->reduce(gc, thisField, start_graph, end_graph); 
     356    std::shared_ptr<COutputPin> ch3 = child3->reduce(gc, thisField, start_graph, end_graph); 
     357 
    260358    std::shared_ptr<CFieldScalarFieldArithmeticFilter> filter(new CFieldScalarFieldArithmeticFilter(gc, opId, child2->reduce())); 
    261     child1->reduce(gc, thisField)->connectOutput(filter, 0); 
    262     child3->reduce(gc, thisField)->connectOutput(filter, 1); 
     359    ch1->connectOutput(filter, 0); 
     360    ch3->connectOutput(filter, 1); 
     361 
     362    (filter->parent_filters).resize(2); 
     363    (filter->parent_filters)[0] = ch1; 
     364    (filter->parent_filters)[1] = ch3; 
     365 
     366    filter->tag = (ch3->tag || ch1->tag); 
     367    filter->start_graph = ch3->tag? ch3->start_graph : (ch1->tag? ch1->start_graph: -1); 
     368    filter->end_graph = ch3->tag? ch3->end_graph : (ch1->tag? ch1->end_graph: -1); 
     369    filter->field = &thisField; 
     370 
    263371    return filter; 
    264372  } 
     
    277385  } 
    278386 
    279   std::shared_ptr<COutputPin> CFilterFieldFieldScalarOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const 
    280   { 
     387  std::shared_ptr<COutputPin> CFilterFieldFieldScalarOpExprNode::reduce(CGarbageCollector& gc, CField& thisField, Time start_graph, Time end_graph) const 
     388  { 
     389    std::shared_ptr<COutputPin> ch1 = child1->reduce(gc, thisField, start_graph, end_graph); 
     390    std::shared_ptr<COutputPin> ch2 = child2->reduce(gc, thisField, start_graph, end_graph); 
     391 
    281392    std::shared_ptr<CFieldFieldScalarArithmeticFilter> filter(new CFieldFieldScalarArithmeticFilter(gc, opId, child3->reduce())); 
    282     child1->reduce(gc, thisField)->connectOutput(filter, 0); 
    283     child2->reduce(gc, thisField)->connectOutput(filter, 1); 
     393    ch1->connectOutput(filter, 0); 
     394    ch2->connectOutput(filter, 1); 
     395 
     396    (filter->parent_filters).resize(2); 
     397    (filter->parent_filters)[0] = ch1; 
     398    (filter->parent_filters)[1] = ch2; 
     399 
     400    filter->tag = (ch2->tag || ch1->tag); 
     401    filter->start_graph = ch2->tag? ch2->start_graph : (ch1->tag? ch1->start_graph: -1); 
     402    filter->end_graph = ch2->tag? ch2->end_graph : (ch1->tag? ch1->end_graph: -1); 
     403    filter->field = &thisField; 
    284404    return filter; 
    285405  } 
     
    297417  } 
    298418 
    299   std::shared_ptr<COutputPin> CFilterFieldFieldFieldOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const 
    300   { 
     419  std::shared_ptr<COutputPin> CFilterFieldFieldFieldOpExprNode::reduce(CGarbageCollector& gc, CField& thisField, Time start_graph, Time end_graph) const 
     420  { 
     421    std::shared_ptr<COutputPin> ch1 = child1->reduce(gc, thisField, start_graph, end_graph); 
     422    std::shared_ptr<COutputPin> ch2 = child2->reduce(gc, thisField, start_graph, end_graph); 
     423    std::shared_ptr<COutputPin> ch3 = child3->reduce(gc, thisField, start_graph, end_graph); 
     424 
    301425    std::shared_ptr<CFieldFieldFieldArithmeticFilter> filter(new CFieldFieldFieldArithmeticFilter(gc, opId)); 
    302     child1->reduce(gc, thisField)->connectOutput(filter, 0); 
    303     child2->reduce(gc, thisField)->connectOutput(filter, 1); 
    304     child3->reduce(gc, thisField)->connectOutput(filter, 2); 
     426    std::cout<<"std::shared_ptr<CFieldFieldFieldArithmeticFilter> filter(new CFieldFieldFieldArithmeticFilter(gc, opId))" <<std::endl; 
     427    ch1->connectOutput(filter, 0); 
     428    ch2->connectOutput(filter, 1); 
     429    ch3->connectOutput(filter, 2); 
     430 
     431    (filter->parent_filters).resize(3); 
     432    (filter->parent_filters)[0] = ch1; 
     433    (filter->parent_filters)[1] = ch2; 
     434    (filter->parent_filters)[2] = ch3; 
     435 
     436 
     437    filter->tag = (ch1->tag || ch1->tag || ch3->tag); 
     438    filter->start_graph = ch1->tag? ch1->start_graph : (ch2->tag? ch2->start_graph: (ch3->tag? ch3->start_graph: -1)); 
     439    filter->end_graph = ch1->tag? ch1->end_graph : (ch2->tag? ch2->end_graph: (ch3->tag? ch3->end_graph: -1)); 
     440    filter->field = &thisField; 
     441 
     442 
    305443    return filter; 
    306444  } 
Note: See TracChangeset for help on using the changeset viewer.