X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=lib%2FcpPlugins%2FInterface%2FWorkspaceIO.cxx;h=d1578ba12818ddb9a3070f113587fcffc473ae98;hb=83e946f1e96c001dde06a2785473d08468e28b2e;hp=b623ad9a025e44118c0ab0b56de645f151169025;hpb=f4aeff15ebb41183d4b89f41b29ec26043848722;p=cpPlugins.git diff --git a/lib/cpPlugins/Interface/WorkspaceIO.cxx b/lib/cpPlugins/Interface/WorkspaceIO.cxx index b623ad9..d1578ba 100644 --- a/lib/cpPlugins/Interface/WorkspaceIO.cxx +++ b/lib/cpPlugins/Interface/WorkspaceIO.cxx @@ -59,6 +59,8 @@ LoadWorkspace( const std::string& fname ) { // Read parameters TParameters* parameters = this->GetParameters( name_value ); + parameters->Clear( ); + TiXmlElement* param = filter->FirstChildElement( "parameter" ); while( param != NULL ) { @@ -70,121 +72,42 @@ LoadWorkspace( const std::string& fname ) const char* value = param->Attribute( "value" ); if( value != NULL ) { - std::istringstream value_str( value ); if( param_type_str == "String" ) - parameters->SetString( param_name, value ); + parameters->ConfigureAsString( param_name ); else if( param_type_str == "Bool" ) - parameters->SetBool( param_name, value[ 0 ] != '0' ); + parameters->ConfigureAsBool( param_name ); else if( param_type_str == "Int" ) - { - TParameters::TInt v; - value_str >> v; - parameters->SetInt( param_name, v ); - } + parameters->ConfigureAsInt( param_name ); else if( param_type_str == "Uint" ) - { - TParameters::TUint v; - value_str >> v; - parameters->SetUint( param_name, v ); - } + parameters->ConfigureAsUint( param_name ); else if( param_type_str == "Real" ) - { - TParameters::TReal v; - value_str >> v; - parameters->SetReal( param_name, v ); - } - /* TODO - else if( param_type_str == "Index" ) - else if( param_type_str == "Point" ) - else if( param_type_str == "Vector" ) - */ - } - else - { - if( param_type_str == "StringList" ) - { - TiXmlElement* item = param->FirstChildElement( "item" ); - while( item != NULL ) - { - value = item->Attribute( "value" ); - if( value != NULL ) - parameters->AddToStringList( param_name, value ); - item = item->NextSiblingElement( "item" ); - - } // elihw - } + parameters->ConfigureAsReal( param_name ); + else if( param_type_str == "Index" ) + parameters->ConfigureAsIndex( param_name ); + else if( param_type_str == "Point" ) + parameters->ConfigureAsPoint( param_name ); + else if( param_type_str == "Vector" ) + parameters->ConfigureAsVector( param_name ); + else if( param_type_str == "StringList" ) + parameters->ConfigureAsStringList( param_name ); else if( param_type_str == "BoolList" ) - { - TiXmlElement* item = param->FirstChildElement( "item" ); - while( item != NULL ) - { - value = item->Attribute( "value" ); - if( value != NULL ) - parameters->AddToBoolList( param_name, value[ 0 ] != '0' ); - item = item->NextSiblingElement( "item" ); - - } // elihw - } + parameters->ConfigureAsBoolList( param_name ); else if( param_type_str == "IntList" ) - { - TiXmlElement* item = param->FirstChildElement( "item" ); - while( item != NULL ) - { - value = item->Attribute( "value" ); - if( value != NULL ) - { - std::istringstream value_str( value ); - TParameters::TInt v; - value_str >> v; - parameters->AddToIntList( param_name, v ); - - } // fi - item = item->NextSiblingElement( "item" ); - - } // elihw - } + parameters->ConfigureAsIntList( param_name ); else if( param_type_str == "UintList" ) - { - TiXmlElement* item = param->FirstChildElement( "item" ); - while( item != NULL ) - { - value = item->Attribute( "value" ); - if( value != NULL ) - { - std::istringstream value_str( value ); - TParameters::TUint v; - value_str >> v; - parameters->AddToUintList( param_name, v ); - - } // fi - item = item->NextSiblingElement( "item" ); - - } // elihw - } + parameters->ConfigureAsUintList( param_name ); else if( param_type_str == "RealList" ) - { - TiXmlElement* item = param->FirstChildElement( "item" ); - while( item != NULL ) - { - value = item->Attribute( "value" ); - if( value != NULL ) - { - std::istringstream value_str( value ); - TParameters::TReal v; - value_str >> v; - parameters->AddToRealList( param_name, v ); + parameters->ConfigureAsRealList( param_name ); + else if( param_type_str == "IndexList" ) + parameters->ConfigureAsIndexList( param_name ); + else if( param_type_str == "PointList" ) + parameters->ConfigureAsPointList( param_name ); + else if( param_type_str == "VectorList" ) + parameters->ConfigureAsVectorList( param_name ); + else if( param_type_str == "Choices" ) + parameters->ConfigureAsChoices( param_name ); + parameters->SetString( param_name, value, false ); - } // fi - item = item->NextSiblingElement( "item" ); - - } // elihw - } - /* TODO - else if( param_type_str == "IndexList" ) - else if( param_type_str == "PointList" ) - else if( param_type_str == "VectorList" ) - else if( param_type_str == "Choices" ); - */ } // fi } // fi @@ -203,7 +126,7 @@ LoadWorkspace( const std::string& fname ) } // elihw - // Read filters + // Read connections TiXmlElement* connection = root->FirstChildElement( "connection" ); while( connection != NULL ) { @@ -271,7 +194,6 @@ SaveWorkspace( const std::string& fname ) const { TiXmlElement* p = new TiXmlElement( "parameter" ); p->SetAttribute( "name", nIt->c_str( ) ); - //const char* param_type = param->Attribute( "type" ); if( params->HasString( *nIt ) ) p->SetAttribute( "type", "String" ); else if( params->HasBool( *nIt ) ) @@ -306,7 +228,9 @@ SaveWorkspace( const std::string& fname ) const p->SetAttribute( "type", "VectorList" ); else if( params->HasChoices( *nIt ) ) p->SetAttribute( "type", "Choices" ); - p->SetAttribute( "value", params->GetString( *nIt, false ).c_str( ) ); + p->SetAttribute( + "value", params->GetString( *nIt, false ).c_str( ) + ); e->LinkEndChild( p ); } // rof @@ -314,10 +238,39 @@ SaveWorkspace( const std::string& fname ) const } else if( data != NULL ) { + // TODO } // fi } // rof + // Save connections + auto mIt = this->m_Graph->BeginEdgesRows( ); + for( ; mIt != this->m_Graph->EndEdgesRows( ); ++mIt ) + { + auto rIt = mIt->second.begin( ); + for( ; rIt != mIt->second.end( ); ++rIt ) + { + auto eIt = rIt->second.begin( ); + for( ; eIt != rIt->second.end( ); ++eIt ) + { + TiXmlElement* conn = new TiXmlElement( "connection" ); + TiXmlElement* orig = new TiXmlElement( "origin" ); + TiXmlElement* dest = new TiXmlElement( "destination" ); + orig->SetAttribute( "filter", mIt->first.c_str( ) ); + orig->SetAttribute( "name", eIt->first.c_str( ) ); + dest->SetAttribute( "filter", rIt->first.c_str( ) ); + dest->SetAttribute( "name", eIt->second.c_str( ) ); + + conn->LinkEndChild( orig ); + conn->LinkEndChild( dest ); + root->LinkEndChild( conn ); + + } // rof + + } // rof + + } // rof + // Physical write and return doc->LinkEndChild( root ); doc->SaveFile( fname.c_str( ) );