Changeset 1670 for XIOS/dev/dev_trunk_omp/src/node/field.cpp
- Timestamp:
- 05/29/19 13:58:48 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/dev_trunk_omp/src/node/field.cpp
r1669 r1670 1197 1197 if (buildWorkflowGraph) 1198 1198 { 1199 if(CWorkflowGraph::mapFilters_ptr==0) CWorkflowGraph::mapFilters_ptr = new std::unordered_map <int, StdString>;1200 if(CWorkflowGraph::mapFieldToFilters_ptr==0) CWorkflowGraph::mapFieldToFilters_ptr = new std::unordered_map <StdString, vector <int> >;1199 if(CWorkflowGraph::mapFilters_ptr==0) CWorkflowGraph::mapFilters_ptr = new std::unordered_map< StdString, std::unordered_map <int, StdString> >; 1200 if(CWorkflowGraph::mapFieldToFilters_ptr==0) CWorkflowGraph::mapFieldToFilters_ptr = new std::unordered_map< StdString, std::unordered_map <StdString, vector <int> > >; 1201 1201 int filterOut = filter->getFilterId(); 1202 1202 int filterIn = (std::static_pointer_cast<COutputPin>(filters.second))->getFilterId(); 1203 (*CWorkflowGraph::mapFieldToFilters_ptr)[this->getOId()].push_back(filterOut); 1204 (*CWorkflowGraph::mapFieldToFilters_ptr)[this->getOId()].push_back(filterIn); 1205 (*CWorkflowGraph::mapFilters_ptr)[filterOut] = filter->GetName(); 1206 (*CWorkflowGraph::mapFilters_ptr)[filterIn] = filters.second->GetName(); 1203 (*CWorkflowGraph::mapFieldToFilters_ptr)[CWorkflowGraph::my_filename][this->getOId()].push_back(filterOut); 1204 (*CWorkflowGraph::mapFieldToFilters_ptr)[CWorkflowGraph::my_filename][this->getOId()].push_back(filterIn); 1205 (*CWorkflowGraph::mapFilters_ptr)[CWorkflowGraph::my_filename][filterOut] = filter->GetName(); 1206 (*CWorkflowGraph::mapFilters_ptr)[CWorkflowGraph::my_filename][filterIn] = filters.second->GetName(); 1207 std::cout<<"CField::buildFilterGraph1 filterIn["<<filterIn<< "] = "<<filters.second->GetName()<< std::endl; 1208 std::cout<<"CField::buildFilterGraph1 filterOut["<<filterOut<< "] = "<<filter->GetName()<< std::endl; 1207 1209 } 1208 1210 filter = filters.second; … … 1232 1234 if (buildWorkflowGraph) 1233 1235 { 1234 if(CWorkflowGraph::mapFilters_ptr==0) CWorkflowGraph::mapFilters_ptr = new std::unordered_map <int, StdString>; 1235 (*CWorkflowGraph::mapFilters_ptr)[instantDataFilter->getFilterId()] = instantDataFilter->GetName(); 1236 //CWorkflowGraph::my_filename = file->name; 1237 if(CWorkflowGraph::mapFilters_ptr==0) CWorkflowGraph::mapFilters_ptr = new std::unordered_map< StdString, std::unordered_map <int, StdString> >; 1238 (*CWorkflowGraph::mapFilters_ptr)[CWorkflowGraph::my_filename][instantDataFilter->getFilterId()] = instantDataFilter->GetName(); 1239 std::cout<<"CField::buildFilterGraph1.else filter["<<instantDataFilter->getFilterId()<< "] = "<<instantDataFilter->GetName()<< std::endl; 1236 1240 } 1237 1241 } … … 1254 1258 if (buildWorkflowGraph) 1255 1259 { 1256 if(CWorkflowGraph::mapFilters_ptr==0) CWorkflowGraph::mapFilters_ptr = new std::unordered_map <int, StdString>; 1257 if(CWorkflowGraph::mapFieldToFilters_ptr==0) CWorkflowGraph::mapFieldToFilters_ptr = new std::unordered_map <StdString, vector <int> >; 1260 CWorkflowGraph::my_filename = file->name; 1261 if(CWorkflowGraph::mapFilters_ptr==0) CWorkflowGraph::mapFilters_ptr = new std::unordered_map< StdString, std::unordered_map <int, StdString> >; 1262 if(CWorkflowGraph::mapFieldToFilters_ptr==0) CWorkflowGraph::mapFieldToFilters_ptr = new std::unordered_map< StdString, std::unordered_map <StdString, vector <int> > >; 1258 1263 int filterOut = getTemporalDataFilter(gc, file->output_freq)->getFilterId(); 1259 1264 int filterIn = fileWriterFilter->getFilterId(); 1260 (*CWorkflowGraph::mapFieldToFilters_ptr)[this->getOId()].push_back(filterOut); 1261 (*CWorkflowGraph::mapFieldToFilters_ptr)[this->getOId()].push_back(filterIn); 1262 (*CWorkflowGraph::mapFilters_ptr)[filterOut] = "Temporal filter"; 1263 (*CWorkflowGraph::mapFilters_ptr)[filterIn] = fileWriterFilter->GetName(); 1264 std::cout<<"CField::buildFilterGraph this->getId() = "<<this->getId() <<" ; this->getOId() = "<<this->getOId()<< std::endl; 1265 (*CWorkflowGraph::mapFieldToFilters_ptr)[CWorkflowGraph::my_filename][this->getOId()].push_back(filterOut); 1266 (*CWorkflowGraph::mapFieldToFilters_ptr)[CWorkflowGraph::my_filename][this->getOId()].push_back(filterIn); 1267 (*CWorkflowGraph::mapFilters_ptr)[CWorkflowGraph::my_filename][filterOut] = "Temporal filter"; 1268 (*CWorkflowGraph::mapFilters_ptr)[CWorkflowGraph::my_filename][filterIn] = fileWriterFilter->GetName(); 1269 std::cout<<"CField::buildFilterGraph2 filterIn["<<filterIn<< "] = "<<fileWriterFilter->GetName()<< std::endl; 1270 std::cout<<"CField::buildFilterGraph2 filterOut["<<filterOut<< "] = "<<"Temporal filter"<< std::endl; 1265 1271 } 1266 1272 } … … 1270 1276 CATCH_DUMP_ATTR 1271 1277 1278 void CField::buildFilterGraph(CGarbageCollector& gc, bool enableOutput, StdString output_filename) 1279 TRY 1280 { 1281 CWorkflowGraph::my_filename = output_filename; 1282 if (!isReferenceSolvedAndTransformed) solveAllEnabledFieldsAndTransform(); 1283 if (!isGridChecked) checkGridOfEnabledFields(); 1284 1285 const bool detectMissingValues = (!detect_missing_value.isEmpty() && !default_value.isEmpty() && detect_missing_value == true); 1286 const bool buildWorkflowGraph = (!build_workflow_graph.isEmpty() && build_workflow_graph == true); 1287 const double defaultValue = detectMissingValues ? default_value : (!default_value.isEmpty() ? default_value : 0.0); 1288 1289 CContext* context = CContext::getCurrent(); 1290 bool hasWriterServer = context->hasServer && !context->hasClient; 1291 bool hasIntermediateServer = context->hasServer && context->hasClient; 1292 1293 if (hasWriterServer) 1294 { 1295 if (!instantDataFilter) 1296 instantDataFilter = clientSourceFilter = std::shared_ptr<CSourceFilter>(new CSourceFilter(gc, grid, true, false)); 1297 1298 1299 // If the field data is to be read by the client or/and written to a file 1300 if (enableOutput && !storeFilter && !fileWriterFilter) 1301 { 1302 if (file && (file->mode.isEmpty() || file->mode == CFile::mode_attr::write)) 1303 { 1304 fileServerWriterFilter = std::shared_ptr<CFileServerWriterFilter>(new CFileServerWriterFilter(gc, this)); 1305 instantDataFilter->connectOutput(fileServerWriterFilter, 0); 1306 } 1307 } 1308 } 1309 else if (hasIntermediateServer) 1310 { 1311 if (!instantDataFilter) 1312 instantDataFilter = clientSourceFilter = std::shared_ptr<CSourceFilter>(new CSourceFilter(gc, grid, false, false)); 1313 1314 // If the field data is to be read by the client or/and written to a file 1315 if (enableOutput && !storeFilter && !fileWriterFilter) 1316 { 1317 if (file && (file->mode.isEmpty() || file->mode == CFile::mode_attr::write)) 1318 { 1319 fileWriterFilter = std::shared_ptr<CFileWriterFilter>(new CFileWriterFilter(gc, this)); 1320 instantDataFilter->connectOutput(fileWriterFilter, 0); 1321 } 1322 } 1323 } 1324 else 1325 { 1326 // Start by building a filter which can provide the field's instant data 1327 if (!instantDataFilter) 1328 { 1329 // Check if we have an expression to parse 1330 if (hasExpression()) 1331 { 1332 boost::scoped_ptr<IFilterExprNode> expr(parseExpr(getExpression() + '\0')); 1333 std::shared_ptr<COutputPin> filter = expr->reduce(gc, *this); 1334 1335 // Check if a spatial transformation is needed 1336 if (!field_ref.isEmpty()) 1337 { 1338 CField* fieldRef = CField::get(field_ref); 1339 fieldRef->build_workflow_graph.setValue(buildWorkflowGraph); 1340 CGrid* gridRef = fieldRef->grid; 1341 1342 if (grid && grid != gridRef && grid->hasTransform()) 1343 { 1344 std::pair<std::shared_ptr<CFilter>, std::shared_ptr<CFilter> > filters = CSpatialTransformFilter::buildFilterGraph(gc, gridRef, grid, 1345 detectMissingValues, defaultValue, buildWorkflowGraph); 1346 1347 filter->connectOutput(filters.first, 0); 1348 1349 if (buildWorkflowGraph) 1350 { 1351 CWorkflowGraph::my_filename = output_filename; 1352 if(CWorkflowGraph::mapFilters_ptr==0) CWorkflowGraph::mapFilters_ptr = new std::unordered_map< StdString, std::unordered_map <int, StdString> >; 1353 if(CWorkflowGraph::mapFieldToFilters_ptr==0) CWorkflowGraph::mapFieldToFilters_ptr = new std::unordered_map< StdString, std::unordered_map <StdString, vector <int> > >; 1354 int filterOut = filter->getFilterId(); 1355 int filterIn = (std::static_pointer_cast<COutputPin>(filters.second))->getFilterId(); 1356 (*CWorkflowGraph::mapFieldToFilters_ptr)[CWorkflowGraph::my_filename][this->getOId()].push_back(filterOut); 1357 (*CWorkflowGraph::mapFieldToFilters_ptr)[CWorkflowGraph::my_filename][this->getOId()].push_back(filterIn); 1358 (*CWorkflowGraph::mapFilters_ptr)[CWorkflowGraph::my_filename][filterOut] = filter->GetName(); 1359 (*CWorkflowGraph::mapFilters_ptr)[CWorkflowGraph::my_filename][filterIn] = filters.second->GetName(); 1360 std::cout<<"***CField::buildFilterGraph1 filterIn["<<filterIn<< "] = "<<filters.second->GetName()<< std::endl; 1361 std::cout<<"***CField::buildFilterGraph1 filterOut["<<filterOut<< "] = "<<filter->GetName()<< std::endl; 1362 } 1363 filter = filters.second; 1364 } 1365 } 1366 1367 instantDataFilter = filter; 1368 } 1369 // Check if we have a reference on another field 1370 else if (!field_ref.isEmpty()) 1371 { 1372 CField::get(field_ref)->build_workflow_graph.setValue(buildWorkflowGraph); 1373 //instantDataFilter = getFieldReference2(gc, output_filename); 1374 instantDataFilter = getFieldReference(gc, output_filename); 1375 } 1376 // Check if the data is to be read from a file 1377 else if (file && !file->mode.isEmpty() && file->mode == CFile::mode_attr::read) 1378 { 1379 checkTimeAttributes(); 1380 instantDataFilter = serverSourceFilter = std::shared_ptr<CSourceFilter>(new CSourceFilter(gc, grid, true, false, freq_offset, true, 1381 detectMissingValues, defaultValue, buildWorkflowGraph)); 1382 } 1383 else // The data might be passed from the model 1384 { 1385 if (check_if_active.isEmpty()) check_if_active = false; 1386 instantDataFilter = clientSourceFilter = std::shared_ptr<CSourceFilter>(new CSourceFilter(gc, grid, false, true, NoneDu, false, 1387 detectMissingValues, defaultValue, buildWorkflowGraph)); 1388 if (buildWorkflowGraph) 1389 { 1390 CWorkflowGraph::my_filename = output_filename;//CWorkflowGraph::my_filename = file->name; 1391 printf("*** *** my_filename = %s\n", CWorkflowGraph::my_filename.c_str()); 1392 if(CWorkflowGraph::mapFilters_ptr==0) CWorkflowGraph::mapFilters_ptr = new std::unordered_map< StdString, std::unordered_map <int, StdString> >; 1393 (*CWorkflowGraph::mapFilters_ptr)[CWorkflowGraph::my_filename][instantDataFilter->getFilterId()] = instantDataFilter->GetName(); 1394 std::cout<<"***CField::buildFilterGraph1.else filter["<<instantDataFilter->getFilterId()<< "] = "<<instantDataFilter->GetName()<< std::endl; 1395 } 1396 } 1397 } 1398 1399 // If the field data is to be read by the client or/and written to a file 1400 if (enableOutput && !storeFilter && !fileWriterFilter) 1401 { 1402 if (!read_access.isEmpty() && read_access) 1403 { 1404 storeFilter = std::shared_ptr<CStoreFilter>(new CStoreFilter(gc, CContext::getCurrent(), grid, 1405 detectMissingValues, defaultValue)); 1406 instantDataFilter->connectOutput(storeFilter, 0); 1407 } 1408 1409 if (file && (file->mode.isEmpty() || file->mode == CFile::mode_attr::write)) 1410 { 1411 fileWriterFilter = std::shared_ptr<CFileWriterFilter>(new CFileWriterFilter(gc, this, buildWorkflowGraph)); 1412 getTemporalDataFilter(gc, file->output_freq)->connectOutput(fileWriterFilter, 0); 1413 if (buildWorkflowGraph) 1414 { 1415 CWorkflowGraph::my_filename = output_filename;//CWorkflowGraph::my_filename = file->name; 1416 if(CWorkflowGraph::mapFilters_ptr==0) CWorkflowGraph::mapFilters_ptr = new std::unordered_map< StdString, std::unordered_map <int, StdString> >; 1417 if(CWorkflowGraph::mapFieldToFilters_ptr==0) CWorkflowGraph::mapFieldToFilters_ptr = new std::unordered_map< StdString, std::unordered_map <StdString, vector <int> > >; 1418 int filterOut = getTemporalDataFilter(gc, file->output_freq)->getFilterId(); 1419 int filterIn = fileWriterFilter->getFilterId(); 1420 (*CWorkflowGraph::mapFieldToFilters_ptr)[CWorkflowGraph::my_filename][this->getOId()].push_back(filterOut); 1421 (*CWorkflowGraph::mapFieldToFilters_ptr)[CWorkflowGraph::my_filename][this->getOId()].push_back(filterIn); 1422 (*CWorkflowGraph::mapFilters_ptr)[CWorkflowGraph::my_filename][filterOut] = "Temporal filter"; 1423 (*CWorkflowGraph::mapFilters_ptr)[CWorkflowGraph::my_filename][filterIn] = fileWriterFilter->GetName(); 1424 std::cout<<"***CField::buildFilterGraph2 filterIn["<<filterIn<< "] = "<<fileWriterFilter->GetName()<< std::endl; 1425 std::cout<<"***CField::buildFilterGraph2 filterOut["<<filterOut<< "] = "<<"Temporal filter"<< std::endl; 1426 } 1427 } 1428 } 1429 } 1430 } 1431 CATCH_DUMP_ATTR 1272 1432 /*! 1273 1433 * Returns the filter needed to handle the field reference. … … 1305 1465 if (buildWorkflowGraph) 1306 1466 { 1307 if(CWorkflowGraph::mapFilters_ptr==0) CWorkflowGraph::mapFilters_ptr = new std::unordered_map <int, StdString>; 1308 if(CWorkflowGraph::mapFieldToFilters_ptr==0) CWorkflowGraph::mapFieldToFilters_ptr = new std::unordered_map <StdString, vector <int> >; 1467 CWorkflowGraph::my_filename = file->name; 1468 if(CWorkflowGraph::mapFilters_ptr==0) CWorkflowGraph::mapFilters_ptr = new std::unordered_map<StdString, std::unordered_map <int, StdString> >; 1469 if(CWorkflowGraph::mapFieldToFilters_ptr==0) CWorkflowGraph::mapFieldToFilters_ptr = new std::unordered_map< StdString, std::unordered_map <StdString, vector <int> > >; 1309 1470 int filterOut = fieldRef->instantDataFilter->getFilterId(); 1310 1471 int filterIn = (std::static_pointer_cast<COutputPin>(filters.first))->getFilterId(); 1311 (*CWorkflowGraph::mapFieldToFilters_ptr)[fieldRef->getOId()].push_back(filterOut); 1312 (*CWorkflowGraph::mapFieldToFilters_ptr)[fieldRef->getOId()].push_back(filterIn); 1313 (*CWorkflowGraph::mapFilters_ptr)[filterOut] = fieldRef->getInstantDataFilter()->GetName(); 1314 (*CWorkflowGraph::mapFilters_ptr)[filterIn] = filters.first->GetName(); 1472 (*CWorkflowGraph::mapFieldToFilters_ptr)[CWorkflowGraph::my_filename][fieldRef->getOId()].push_back(filterOut); 1473 (*CWorkflowGraph::mapFieldToFilters_ptr)[CWorkflowGraph::my_filename][fieldRef->getOId()].push_back(filterIn); 1474 (*CWorkflowGraph::mapFilters_ptr)[CWorkflowGraph::my_filename][filterOut] = fieldRef->getInstantDataFilter()->GetName(); 1475 (*CWorkflowGraph::mapFilters_ptr)[CWorkflowGraph::my_filename][filterIn] = filters.first->GetName(); 1476 std::cout<<"CField::getFieldReference filterIn["<<filterIn<< "] = "<<filters.first->GetName()<< std::endl; 1477 std::cout<<"CField::getFieldReference filterOut["<<filterOut<< "] = "<<fieldRef->getInstantDataFilter()->GetName()<< std::endl; 1315 1478 } 1316 1479 return filters.second; 1317 1480 } 1318 1481 CATCH_DUMP_ATTR 1319 1482 1483 std::shared_ptr<COutputPin> CField::getFieldReference(CGarbageCollector& gc, StdString output_filename) 1484 TRY 1485 { 1486 CWorkflowGraph::my_filename = output_filename; 1487 if (instantDataFilter || field_ref.isEmpty()) 1488 ERROR("COutputPin* CField::getFieldReference(CGarbageCollector& gc)", 1489 "Impossible to get the field reference for a field which has already been parsed or which does not have a field_ref."); 1490 1491 CField* fieldRef = CField::get(field_ref); 1492 //fieldRef->buildFilterGraph2(gc, false, output_filename); 1493 fieldRef->buildFilterGraph(gc, false, output_filename); 1494 bool buildWorkflowGraph = (!build_workflow_graph.isEmpty() && build_workflow_graph == true); 1495 1496 std::pair<std::shared_ptr<CFilter>, std::shared_ptr<CFilter> > filters; 1497 // Check if a spatial transformation is needed 1498 if (grid && grid != fieldRef->grid && grid->hasTransform()) 1499 { 1500 bool hasMissingValue = (!detect_missing_value.isEmpty() && !default_value.isEmpty() && detect_missing_value == true); 1501 double defaultValue = hasMissingValue ? default_value : (!default_value.isEmpty() ? default_value : 0.0); 1502 filters = CSpatialTransformFilter::buildFilterGraph(gc, fieldRef->grid, grid, hasMissingValue, defaultValue, buildWorkflowGraph); 1503 } 1504 else 1505 { 1506 filters.first = filters.second = std::shared_ptr<CFilter>(new CPassThroughFilter(gc, buildWorkflowGraph)); 1507 } 1508 1509 fieldRef->getInstantDataFilter()->connectOutput(filters.first, 0); 1510 1511 if (buildWorkflowGraph) 1512 { 1513 CWorkflowGraph::my_filename = output_filename; 1514 if(CWorkflowGraph::mapFilters_ptr==0) CWorkflowGraph::mapFilters_ptr = new std::unordered_map<StdString, std::unordered_map <int, StdString> >; 1515 if(CWorkflowGraph::mapFieldToFilters_ptr==0) CWorkflowGraph::mapFieldToFilters_ptr = new std::unordered_map< StdString, std::unordered_map <StdString, vector <int> > >; 1516 int filterOut = fieldRef->instantDataFilter->getFilterId(); 1517 int filterIn = (std::static_pointer_cast<COutputPin>(filters.first))->getFilterId(); 1518 (*CWorkflowGraph::mapFieldToFilters_ptr)[CWorkflowGraph::my_filename][fieldRef->getOId()].push_back(filterOut); 1519 (*CWorkflowGraph::mapFieldToFilters_ptr)[CWorkflowGraph::my_filename][fieldRef->getOId()].push_back(filterIn); 1520 (*CWorkflowGraph::mapFilters_ptr)[CWorkflowGraph::my_filename][filterOut] = fieldRef->getInstantDataFilter()->GetName(); 1521 (*CWorkflowGraph::mapFilters_ptr)[CWorkflowGraph::my_filename][filterIn] = filters.first->GetName(); 1522 std::cout<<"CField::getFieldReference filterIn["<<filterIn<< "] = "<<filters.first->GetName()<< std::endl; 1523 std::cout<<"CField::getFieldReference filterOut["<<filterOut<< "] = "<<fieldRef->getInstantDataFilter()->GetName()<< std::endl; 1524 } 1525 return filters.second; 1526 } 1527 CATCH_DUMP_ATTR 1320 1528 /*! 1321 1529 * Returns the filter needed to handle a self reference in the field's expression. … … 1405 1613 if (buildWorkflowGraph) 1406 1614 { 1407 if(CWorkflowGraph::mapFilters_ptr==0) CWorkflowGraph::mapFilters_ptr = new std::unordered_map <int, StdString>;1408 if(CWorkflowGraph::mapFieldToFilters_ptr==0) CWorkflowGraph::mapFieldToFilters_ptr = new std::unordered_map <StdString, vector <int> >;1615 if(CWorkflowGraph::mapFilters_ptr==0) CWorkflowGraph::mapFilters_ptr = new std::unordered_map< StdString, std::unordered_map <int, StdString> >; 1616 if(CWorkflowGraph::mapFieldToFilters_ptr==0) CWorkflowGraph::mapFieldToFilters_ptr = new std::unordered_map<StdString, std::unordered_map <StdString, vector <int> > >; 1409 1617 int filterOut = instantDataFilter->getFilterId(); 1410 1618 int filterIn = (std::static_pointer_cast<COutputPin>(temporalFilter))->getFilterId(); 1411 (*CWorkflowGraph::mapFieldToFilters_ptr)[this->getOId()].push_back(filterOut); 1412 (*CWorkflowGraph::mapFieldToFilters_ptr)[this->getOId()].push_back(filterIn); 1413 (*CWorkflowGraph::mapFilters_ptr)[filterOut] = getInstantDataFilter()->GetName(); 1414 (*CWorkflowGraph::mapFilters_ptr)[filterIn] = temporalFilter->GetName(); 1619 (*CWorkflowGraph::mapFieldToFilters_ptr)[CWorkflowGraph::my_filename][this->getOId()].push_back(filterOut); 1620 (*CWorkflowGraph::mapFieldToFilters_ptr)[CWorkflowGraph::my_filename][this->getOId()].push_back(filterIn); 1621 (*CWorkflowGraph::mapFilters_ptr)[CWorkflowGraph::my_filename][filterOut] = getInstantDataFilter()->GetName(); 1622 (*CWorkflowGraph::mapFilters_ptr)[CWorkflowGraph::my_filename][filterIn] = temporalFilter->GetName(); 1623 std::cout<<"CField::getTemporalDataFilter filterIn["<<filterIn<< "] = "<<temporalFilter->GetName()<< std::endl; 1624 std::cout<<"CField::getTemporalDataFilter filterOut["<<filterOut<< "] = "<<getInstantDataFilter()->GetName()<< std::endl; 1415 1625 } 1416 1626 … … 1459 1669 1460 1670 { 1461 if(CWorkflowGraph::mapFilters_ptr==0) CWorkflowGraph::mapFilters_ptr = new std::unordered_map <int, StdString>;1462 if(CWorkflowGraph::mapFieldToFilters_ptr==0) CWorkflowGraph::mapFieldToFilters_ptr = new std::unordered_map <StdString, vector <int> >;1671 if(CWorkflowGraph::mapFilters_ptr==0) CWorkflowGraph::mapFilters_ptr = new std::unordered_map<StdString, std::unordered_map <int, StdString> >; 1672 if(CWorkflowGraph::mapFieldToFilters_ptr==0) CWorkflowGraph::mapFieldToFilters_ptr = new std::unordered_map< StdString, std::unordered_map <StdString, vector <int> > >; 1463 1673 int filterOut = selfReferenceFilter->getFilterId(); 1464 1674 int filterIn = (std::static_pointer_cast<COutputPin>(temporalFilter))->getFilterId(); 1465 (*CWorkflowGraph::mapFieldToFilters_ptr)[this->getOId()].push_back(filterOut); 1466 (*CWorkflowGraph::mapFieldToFilters_ptr)[this->getOId()].push_back(filterIn); 1467 (*CWorkflowGraph::mapFilters_ptr)[filterOut] = selfReferenceFilter->GetName(); 1468 (*CWorkflowGraph::mapFilters_ptr)[filterIn] = temporalFilter->GetName(); 1675 (*CWorkflowGraph::mapFieldToFilters_ptr)[CWorkflowGraph::my_filename][this->getOId()].push_back(filterOut); 1676 (*CWorkflowGraph::mapFieldToFilters_ptr)[CWorkflowGraph::my_filename][this->getOId()].push_back(filterIn); 1677 (*CWorkflowGraph::mapFilters_ptr)[CWorkflowGraph::my_filename][filterOut] = selfReferenceFilter->GetName(); 1678 (*CWorkflowGraph::mapFilters_ptr)[CWorkflowGraph::my_filename][filterIn] = temporalFilter->GetName(); 1679 std::cout<<"CField::getSelfTemporalDataFilter filterIn["<<filterIn<< "] = "<<temporalFilter->GetName()<< std::endl; 1680 std::cout<<"CField::getSelfTemporalDataFilter filterOut["<<filterOut<< "] = "<<selfReferenceFilter->GetName()<< std::endl; 1469 1681 } 1470 1682 … … 1993 2205 DEFINE_REF_FUNC(Field,field) 1994 2206 } // namespace xios 2207
Note: See TracChangeset
for help on using the changeset viewer.