X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FGEOMImpl%2FGEOMImpl_ImportDriver.cxx;h=5016c824a9755a5874484d0c01cbdcc32f4c59b0;hb=HEAD;hp=768690584d2a2a35c07457719f4bbfa7a4721f6c;hpb=3cd92817cb4c5ee5911d6f40fe977b5e57b980e1;p=modules%2Fgeom.git diff --git a/src/GEOMImpl/GEOMImpl_ImportDriver.cxx b/src/GEOMImpl/GEOMImpl_ImportDriver.cxx old mode 100755 new mode 100644 index 768690584..5016c824a --- a/src/GEOMImpl/GEOMImpl_ImportDriver.cxx +++ b/src/GEOMImpl/GEOMImpl_ImportDriver.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2024 CEA, EDF, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,49 +20,19 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -#include +// internal includes +#include "GEOMImpl_ImportDriver.hxx" +#include "GEOMImpl_IImportExport.hxx" +#include "GEOMImpl_IECallBack.hxx" +#include "GEOMImpl_Types.hxx" -#include -#include -#include +// GEOM includes #include +// OCC includes +#include #include -#include - -#include "utilities.h" - -#include -#include - -#ifdef WIN32 -#include -#else -#include -#endif - -#ifdef WIN32 -#define LibHandle HMODULE -#define LoadLib( name ) LoadLibrary( name ) -#define GetProc GetProcAddress -#define UnLoadLib( handle ) FreeLibrary( handle ); -#else -#define LibHandle void* -#define LoadLib( name ) dlopen( name, RTLD_LAZY ) -#define GetProc dlsym -#define UnLoadLib( handle ) dlclose( handle ); -#endif - -typedef TopoDS_Shape (*funcPoint)(const TCollection_AsciiString&, - const TCollection_AsciiString&, - TCollection_AsciiString&, - const TDF_Label&); - -typedef Handle(TCollection_HAsciiString) (*pGetValue)(const TCollection_AsciiString&, - const TCollection_AsciiString&, - TCollection_AsciiString&); - //======================================================================= //function : GetID //purpose : @@ -85,110 +55,32 @@ GEOMImpl_ImportDriver::GEOMImpl_ImportDriver() //function : Execute //purpose : //======================================================================= -Standard_Integer GEOMImpl_ImportDriver::Execute(TFunction_Logbook& log) const +Standard_Integer GEOMImpl_ImportDriver::Execute(Handle(TFunction_Logbook)& log) const { if (Label().IsNull()) return 0; Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); GEOMImpl_IImportExport aCI (aFunction); - //Standard_Integer aType = aFunction->GetType(); // retrieve the file and plugin library names TCollection_AsciiString aFileName = aCI.GetFileName(); TCollection_AsciiString aFormatName = aCI.GetFormatName(); - TCollection_AsciiString aLibName = aCI.GetPluginName(); - if (aFileName.IsEmpty() || aFormatName.IsEmpty() || aLibName.IsEmpty()) + if (aFileName.IsEmpty() || aFormatName.IsEmpty() ) return 0; - // load plugin library - LibHandle anImportLib = LoadLib( aLibName.ToCString() ); //This is workaround of BUG OCC13051 - - // Get Import method - funcPoint fp = 0; - if ( anImportLib ) - fp = (funcPoint)GetProc( anImportLib, "Import" ); - - if ( !fp ) { - TCollection_AsciiString aMsg = aFormatName.SubString(1,4); - aMsg += " plugin was not installed"; - Standard_Failure::Raise(aMsg.ToCString()); - } - - // perform the import - TCollection_AsciiString anError; - TopoDS_Shape aShape = fp(aFileName, aFormatName, anError, aFunction->GetNamingEntry()); - - // unload plugin library - // commented by enk: - // the bug was occured: using ACIS Import/Export plugin - //UnLoadLib( anImportLib ); //This is workaround of BUG OCC13051 - - if ( aShape.IsNull() ) { - StdFail_NotDone::Raise(anError.ToCString()); + Handle(TColStd_HSequenceOfTransient) aSeq = + GEOMImpl_IECallBack::GetCallBack( aFormatName )->Import( aFormatName, aFileName ); + if( aSeq.IsNull() ) return 0; - } - // set the function result - aFunction->SetValue(aShape); - - log.SetTouched(Label()); + Handle(GEOM_Object) anImported = Handle(GEOM_Object)::DownCast( aSeq->Value(1) ); + TopoDS_Shape aShape = anImported->GetValue(); + aFunction->SetValue( aShape ); + log->SetTouched(Label()); return 1; } -//======================================================================= -//function : ReadValue -//purpose : -//======================================================================= -TCollection_AsciiString GEOMImpl_ImportDriver::ReadValue(const TCollection_AsciiString& theFileName, - const TCollection_AsciiString& theLibName, - const TCollection_AsciiString& theParameterName, - TCollection_AsciiString& theError) -{ - TCollection_AsciiString aValue; - - if (theFileName.IsEmpty() || theLibName.IsEmpty() || theParameterName.IsEmpty()) - return aValue; - - // load plugin library - LibHandle anImportLib = LoadLib(theLibName.ToCString()); //This is workaround of BUG OCC13051 - if (!anImportLib) { - theError = theLibName + " library was not installed"; - return aValue; - } - - // Get GetValue method - pGetValue pGV = (pGetValue)GetProc(anImportLib, "GetValue"); - - if (!pGV) { - theError = theLibName + " library doesn't support GetValue method"; - return aValue; - } - - Handle(TCollection_HAsciiString) aHValue = pGV(theFileName, theParameterName, theError); - - if (aHValue.IsNull()) { - if (theError.IsEmpty()) - theError = theFileName + " doesn't contain requested parameter"; - return aValue; - } - - aValue = aHValue->String(); - - // unload plugin library - // commented by enk: - // the bug was occured: using ACIS Import/Export plugin - //UnLoadLib( anImportLib ); //This is workaround of BUG OCC13051 - - return aValue; -} - -//================================================================================ -/*! - * \brief Returns a name of creation operation and names and values of creation parameters - */ -//================================================================================ - bool GEOMImpl_ImportDriver:: GetCreationInformation(std::string& theOperationName, std::vector& theParams) @@ -214,5 +106,4 @@ GetCreationInformation(std::string& theOperationName, return true; } -IMPLEMENT_STANDARD_HANDLE (GEOMImpl_ImportDriver,GEOM_BaseDriver); -IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_ImportDriver,GEOM_BaseDriver); +IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_ImportDriver,GEOM_BaseDriver)