Changeset 1671 for XIOS/dev/dev_trunk_omp/src/node/field.cpp
- Timestamp:
- 06/04/19 10:00:52 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/dev_trunk_omp/src/node/field.cpp
r1670 r1671 1197 1197 if (buildWorkflowGraph) 1198 1198 { 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>> >;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> >; 1201 1201 int filterOut = filter->getFilterId(); 1202 1202 int filterIn = (std::static_pointer_cast<COutputPin>(filters.second))->getFilterId(); 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; 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(); 1207 std::cout<<"CField::buildFilterGraph (*CWorkflowGraph::mapFilters_ptr)["<<filterOut<<"] = "<<filter->GetName()<<std::endl; 1209 1208 } 1210 1209 filter = filters.second; … … 1234 1233 if (buildWorkflowGraph) 1235 1234 { 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; 1235 if(CWorkflowGraph::mapFilters_ptr==0) CWorkflowGraph::mapFilters_ptr = new std::unordered_map <int, StdString>; 1236 (*CWorkflowGraph::mapFilters_ptr)[instantDataFilter->getFilterId()] = instantDataFilter->GetName(); 1237 std::cout<<"CField::buildFilterGraph2 (*CWorkflowGraph::mapFilters_ptr)["<<instantDataFilter->getFilterId()<<"] = "<<instantDataFilter->GetName()<<std::endl; 1240 1238 } 1241 1239 } … … 1258 1256 if (buildWorkflowGraph) 1259 1257 { 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 if(CWorkflowGraph::mapFilters_ptr==0) CWorkflowGraph::mapFilters_ptr = new std::unordered_map <int, StdString>; 1259 if(CWorkflowGraph::mapFieldToFilters_ptr==0) CWorkflowGraph::mapFieldToFilters_ptr = new std::unordered_map <StdString, vector <int> >; 1263 1260 int filterOut = getTemporalDataFilter(gc, file->output_freq)->getFilterId(); 1264 1261 int filterIn = fileWriterFilter->getFilterId(); 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; 1262 (*CWorkflowGraph::mapFieldToFilters_ptr)[this->getOId()].push_back(filterOut); 1263 (*CWorkflowGraph::mapFieldToFilters_ptr)[this->getOId()].push_back(filterIn); 1264 (*CWorkflowGraph::mapFilters_ptr)[filterOut] = "Temporal filter"; 1265 (*CWorkflowGraph::mapFilters_ptr)[filterIn] = fileWriterFilter->GetName(); 1271 1266 } 1272 1267 } … … 1276 1271 CATCH_DUMP_ATTR 1277 1272 1278 void CField::buildFilterGraph(CGarbageCollector& gc, bool enableOutput, StdString output_filename)1279 TRY1280 {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 file1300 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 file1315 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 else1325 {1326 // Start by building a filter which can provide the field's instant data1327 if (!instantDataFilter)1328 {1329 // Check if we have an expression to parse1330 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 needed1336 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 field1370 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 file1377 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 model1384 {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 file1400 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_ATTR1432 1273 /*! 1433 1274 * Returns the filter needed to handle the field reference. … … 1465 1306 if (buildWorkflowGraph) 1466 1307 { 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> > >; 1308 if(CWorkflowGraph::mapFilters_ptr==0) CWorkflowGraph::mapFilters_ptr = new std::unordered_map <int, StdString>; 1309 if(CWorkflowGraph::mapFieldToFilters_ptr==0) CWorkflowGraph::mapFieldToFilters_ptr = new std::unordered_map <StdString, vector <int> >; 1470 1310 int filterOut = fieldRef->instantDataFilter->getFilterId(); 1471 1311 int filterIn = (std::static_pointer_cast<COutputPin>(filters.first))->getFilterId(); 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; 1312 (*CWorkflowGraph::mapFieldToFilters_ptr)[fieldRef->getOId()].push_back(filterOut); 1313 (*CWorkflowGraph::mapFieldToFilters_ptr)[fieldRef->getOId()].push_back(filterIn); 1314 (*CWorkflowGraph::mapFilters_ptr)[filterOut] = fieldRef->getInstantDataFilter()->GetName(); 1315 (*CWorkflowGraph::mapFilters_ptr)[filterIn] = filters.first->GetName(); 1316 std::cout<<"CField::getFieldReference (*CWorkflowGraph::mapFilters_ptr)["<<filterOut<<"] = "<<fieldRef->getInstantDataFilter()->GetName()<<std::endl; 1478 1317 } 1479 1318 return filters.second; 1480 1319 } 1481 1320 CATCH_DUMP_ATTR 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 1321 1528 1322 /*! 1529 1323 * Returns the filter needed to handle a self reference in the field's expression. … … 1613 1407 if (buildWorkflowGraph) 1614 1408 { 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 if(CWorkflowGraph::mapFilters_ptr==0) CWorkflowGraph::mapFilters_ptr = new std::unordered_map <int, StdString>; 1410 if(CWorkflowGraph::mapFieldToFilters_ptr==0) CWorkflowGraph::mapFieldToFilters_ptr = new std::unordered_map <StdString, vector <int> >; 1617 1411 int filterOut = instantDataFilter->getFilterId(); 1618 1412 int filterIn = (std::static_pointer_cast<COutputPin>(temporalFilter))->getFilterId(); 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; 1413 (*CWorkflowGraph::mapFieldToFilters_ptr)[this->getOId()].push_back(filterOut); 1414 (*CWorkflowGraph::mapFieldToFilters_ptr)[this->getOId()].push_back(filterIn); 1415 (*CWorkflowGraph::mapFilters_ptr)[filterOut] = getInstantDataFilter()->GetName(); 1416 (*CWorkflowGraph::mapFilters_ptr)[filterIn] = temporalFilter->GetName(); 1417 std::cout<<"CField::getTemporalDataFilter (*CWorkflowGraph::mapFilters_ptr)["<<filterOut<<"] = "<<getInstantDataFilter()->GetName()<<std::endl; 1625 1418 } 1626 1419 … … 1669 1462 1670 1463 { 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>> >;1464 if(CWorkflowGraph::mapFilters_ptr==0) CWorkflowGraph::mapFilters_ptr = new std::unordered_map <int, StdString>; 1465 if(CWorkflowGraph::mapFieldToFilters_ptr==0) CWorkflowGraph::mapFieldToFilters_ptr = new std::unordered_map <StdString, vector <int> >; 1673 1466 int filterOut = selfReferenceFilter->getFilterId(); 1674 1467 int filterIn = (std::static_pointer_cast<COutputPin>(temporalFilter))->getFilterId(); 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; 1468 (*CWorkflowGraph::mapFieldToFilters_ptr)[this->getOId()].push_back(filterOut); 1469 (*CWorkflowGraph::mapFieldToFilters_ptr)[this->getOId()].push_back(filterIn); 1470 (*CWorkflowGraph::mapFilters_ptr)[filterOut] = selfReferenceFilter->GetName(); 1471 (*CWorkflowGraph::mapFilters_ptr)[filterIn] = temporalFilter->GetName(); 1472 std::cout<<"CField::getSelfTemporalDataFilter (*CWorkflowGraph::mapFilters_ptr)["<<filterOut<<"] = "<<selfReferenceFilter->GetName()<<std::endl; 1681 1473 } 1682 1474 … … 2205 1997 DEFINE_REF_FUNC(Field,field) 2206 1998 } // namespace xios 2207
Note: See TracChangeset
for help on using the changeset viewer.