Ignore:
Timestamp:
04/08/16 15:00:45 (8 years ago)
Author:
mhnguyen
Message:

Exposing transformation to Fortran interface

+) Export zoom and axis transformation to Fortran interface

Test
+) On Curie
+) All work

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/node/axis.cpp

    r829 r836  
    4141   CAxis::~CAxis(void) 
    4242   { /* Ne rien faire de plus */ } 
     43 
     44   std::map<StdString, ETranformationType> CAxis::transformationMapList_ = std::map<StdString, ETranformationType>(); 
     45   bool CAxis::dummyTransformationMapList_ = CAxis::initializeTransformationMap(CAxis::transformationMapList_); 
     46   bool CAxis::initializeTransformationMap(std::map<StdString, ETranformationType>& m) 
     47   { 
     48     m["zoom_axis"] = TRANS_ZOOM_AXIS; 
     49     m["interpolate_axis"] = TRANS_INTERPOLATE_AXIS; 
     50     m["inverse_axis"] = TRANS_INVERSE_AXIS; 
     51   } 
    4352 
    4453   ///--------------------------------------------------------------- 
     
    884893  } 
    885894 
     895  CTransformation<CAxis>* CAxis::addTransformation(ETranformationType transType, const StdString& id) 
     896  { 
     897    transformationMap_.push_back(std::make_pair(transType, CTransformation<CAxis>::createTransformation(transType,id))); 
     898    return transformationMap_.back().second; 
     899  } 
     900 
    886901  bool CAxis::hasTransformation() 
    887902  { 
     
    948963    if (node.goToChildElement()) 
    949964    { 
    950       StdString inverseAxisDefRoot("inverse_axis_definition"); 
    951       StdString inverse("inverse_axis"); 
    952       StdString zoomAxisDefRoot("zoom_axis_definition"); 
    953       StdString zoom("zoom_axis"); 
    954       StdString interpAxisDefRoot("interpolate_axis_definition"); 
    955       StdString interp("interpolate_axis"); 
     965      StdString nodeElementName; 
    956966      do 
    957967      { 
     
    960970        { nodeId = node.getAttributes()["id"]; } 
    961971 
    962         if (node.getElementName() == inverse) { 
    963           CInverseAxis* tmp = (CInverseAxisGroup::get(inverseAxisDefRoot))->createChild(nodeId); 
    964           tmp->parse(node); 
    965           transformationMap_.push_back(std::make_pair(TRANS_INVERSE_AXIS,tmp)); 
    966         } 
    967         else if (node.getElementName() == zoom) { 
    968           CZoomAxis* tmp = (CZoomAxisGroup::get(zoomAxisDefRoot))->createChild(nodeId); 
    969           tmp->parse(node); 
    970           transformationMap_.push_back(std::make_pair(TRANS_ZOOM_AXIS,tmp)); 
    971         } 
    972         else if (node.getElementName() == interp) { 
    973           CInterpolateAxis* tmp = (CInterpolateAxisGroup::get(interpAxisDefRoot))->createChild(nodeId); 
    974           tmp->parse(node); 
    975           transformationMap_.push_back(std::make_pair(TRANS_INTERPOLATE_AXIS,tmp)); 
     972        nodeElementName = node.getElementName(); 
     973        std::map<StdString, ETranformationType>::const_iterator ite = transformationMapList_.end(), it; 
     974        it = transformationMapList_.find(nodeElementName); 
     975        if (ite != it) 
     976        { 
     977          transformationMap_.push_back(std::make_pair(it->second, CTransformation<CAxis>::createTransformation(it->second, 
     978                                                                                                               nodeId, 
     979                                                                                                               &node))); 
    976980        } 
    977981      } while (node.goToNextElement()) ; 
Note: See TracChangeset for help on using the changeset viewer.