X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FGEOMImpl%2FGEOMImpl_ExportDriver.cxx;h=8e177e9a686f6d175b15b12bab1e802ec0f8d31c;hb=ed87a1f7c81ec39992aff1f463d73dc81e5791e0;hp=27c5f8bb4ac3e36e8e87f0893a7a088d22f40ba0;hpb=73555c78ebf12a1fdb85157b8e7934ad566ae90a;p=modules%2Fgeom.git diff --git a/src/GEOMImpl/GEOMImpl_ExportDriver.cxx b/src/GEOMImpl/GEOMImpl_ExportDriver.cxx index 27c5f8bb4..8e177e9a6 100644 --- a/src/GEOMImpl/GEOMImpl_ExportDriver.cxx +++ b/src/GEOMImpl/GEOMImpl_ExportDriver.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -6,7 +6,7 @@ // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either -// version 2.1 of the License. +// version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -20,39 +20,19 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -#include +// internal includes +#include "GEOMImpl_ExportDriver.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 - -#ifdef WNT -#include -#else -#include -#endif - -#ifdef WNT -#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 int (*funcPoint)(const TopoDS_Shape&, - const TCollection_AsciiString&, - const TCollection_AsciiString&); + //======================================================================= //function : GetID @@ -93,6 +73,11 @@ Standard_Integer GEOMImpl_ExportDriver::Execute(TFunction_Logbook& log) const // !!! set the result of function to be used by next operations aFunction->SetValue(aShape); + TDF_Label aLabel = aRefFunction->GetOwnerEntry(); + if (aLabel.IsRoot()) return 0; + Handle(GEOM_Object) obj = GEOM_Object::GetObject( aLabel ); + if ( obj.IsNull() ) return 0; + // retrieve the file and format names TCollection_AsciiString aFileName = aCI.GetFileName(); TCollection_AsciiString aFormatName = aCI.GetFormatName(); @@ -100,71 +85,26 @@ Standard_Integer GEOMImpl_ExportDriver::Execute(TFunction_Logbook& log) const if (aFileName.IsEmpty() || aFormatName.IsEmpty() || aLibName.IsEmpty()) return 0; - // load plugin library - LibHandle anExportLib = LoadLib( aLibName.ToCString() ); //This is workaround of BUG OCC13051 - funcPoint fp = 0; - if ( anExportLib ) - fp = (funcPoint)GetProc( anExportLib, "Export" ); - - if ( !fp ) { - TCollection_AsciiString aMsg = aFormatName; - aMsg += " plugin was not installed"; - Standard_Failure::Raise(aMsg.ToCString()); - } - - // perform the export - int res = fp( aShape, aFileName, aFormatName ); - - // unload plugin library - // commented by enk: - // the bug was occured: using ACIS Import/Export plugin - // UnLoadLib( anExportLib ); + if( !GEOMImpl_IECallBack::GetCallBack( aFormatName )->Export( GetDocID(), obj, aFileName, aFormatName ) ); + return 0; - if ( res ) - log.SetTouched(Label()); + log.SetTouched(Label()); - return res; + return 1; } +//================================================================================ +/*! + * \brief Returns a name of creation operation and names and values of creation parameters + */ +//================================================================================ -//======================================================================= -//function : GEOMImpl_ExportDriver_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOMImpl_ExportDriver_Type_() +bool GEOMImpl_ExportDriver:: +GetCreationInformation(std::string& theOperationName, + std::vector& theParams) { - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_ExportDriver", - sizeof(GEOMImpl_ExportDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; + return false; } -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= -const Handle(GEOMImpl_ExportDriver) Handle(GEOMImpl_ExportDriver)::DownCast(const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMImpl_ExportDriver) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_ExportDriver))) { - _anOtherObject = Handle(GEOMImpl_ExportDriver)((Handle(GEOMImpl_ExportDriver)&)AnObject); - } - } - - return _anOtherObject ; -} +IMPLEMENT_STANDARD_HANDLE (GEOMImpl_ExportDriver,GEOM_BaseDriver); +IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_ExportDriver,GEOM_BaseDriver);