Changeset 1686 for XIOS/dev/dev_olga/src/parse_expr/filter_expr_node.cpp
- Timestamp:
- 07/31/19 13:51:01 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/dev_olga/src/parse_expr/filter_expr_node.cpp
r1577 r1686 12 12 13 13 14 std::shared_ptr<COutputPin> CFilterFieldExprNode::reduce(CGarbageCollector& gc, CField& thisField ) const14 std::shared_ptr<COutputPin> CFilterFieldExprNode::reduce(CGarbageCollector& gc, CField& thisField, Time start_graph, Time end_graph) const 15 15 { 16 16 std::shared_ptr<COutputPin> outputPin; … … 40 40 << "Use the keyword \"this\" if you want to reference the input data sent to this field."); 41 41 42 field->buildFilterGraph(gc, false); 42 // field->buildFilterGraph(gc, false); 43 field->buildFilterGraph(gc, false, start_graph, end_graph); 43 44 outputPin = field->getInstantDataFilter(); 44 45 } … … 55 56 56 57 57 std::shared_ptr<COutputPin> CFilterTemporalFieldExprNode::reduce(CGarbageCollector& gc, CField& thisField ) const58 std::shared_ptr<COutputPin> CFilterTemporalFieldExprNode::reduce(CGarbageCollector& gc, CField& thisField, Time start_graph, Time end_graph) const 58 59 { 59 60 std::shared_ptr<COutputPin> outputPin; … … 104 105 } 105 106 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 108 111 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 110 123 return filter; 111 124 } … … 121 134 } 122 135 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); 125 139 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 127 150 return filter; 128 151 } … … 138 161 } 139 162 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 142 167 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 144 178 return filter; 145 179 } … … 155 189 } 156 190 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 159 196 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 162 211 return filter; 163 212 } … … 177 226 } 178 227 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 181 232 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 183 243 return filter; 184 244 } … … 196 256 } 197 257 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 200 262 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 202 273 return filter; 203 274 } … … 215 286 } 216 287 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 219 293 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 222 306 return filter; 223 307 } … … 236 320 } 237 321 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 240 326 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 242 337 return filter; 243 338 } … … 256 351 } 257 352 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 260 358 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 263 371 return filter; 264 372 } … … 277 385 } 278 386 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 281 392 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; 284 404 return filter; 285 405 } … … 297 417 } 298 418 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 301 425 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 305 443 return filter; 306 444 }
Note: See TracChangeset
for help on using the changeset viewer.