mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-09 13:22:24 +03:00
0024023: Revamp the OCCT Handle -- plugin
Definition of PLUGINFACTORY function changed to return Standard_Transient* instead of Handle(Standard_Transient), which cannot be returned by C-style function. Default implementation of PLUGINFACTORY() instantiated by macro PLUGIN() is corrected accordingly. Methods Factory() in persistence packages are made returning const & to handle; this is to reflect the fact that returned handle should point to existing object (usually statically allocated) rather than new one.
This commit is contained in:
@@ -31,7 +31,7 @@
|
||||
static Standard_GUID XmlStorageDriver ("f78ff4a0-a779-11d5-aab4-0050044b1af1");
|
||||
static Standard_GUID XmlRetrievalDriver("f78ff4a1-a779-11d5-aab4-0050044b1af1");
|
||||
|
||||
Handle(Standard_Transient) XmlTObjDrivers::Factory(const Standard_GUID& aGUID)
|
||||
const Handle(Standard_Transient)& XmlTObjDrivers::Factory(const Standard_GUID& aGUID)
|
||||
{
|
||||
if(aGUID == XmlStorageDriver)
|
||||
{
|
||||
@@ -71,8 +71,4 @@ void XmlTObjDrivers::AddDrivers (const Handle(XmlMDF_ADriverTable)& aDriverTable
|
||||
aDriverTable -> AddDriver (new XmlTObjDrivers_IntSparseArrayDriver(anMsgDrv));
|
||||
}
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#pragma warning(disable:4190) /* disable warning on C++ type returned by C function; should be OK for C++ usage */
|
||||
#endif
|
||||
|
||||
PLUGIN(XmlTObjDrivers)
|
||||
|
@@ -30,7 +30,7 @@ class XmlTObjDrivers
|
||||
public:
|
||||
// ---------- PUBLIC METHODS ----------
|
||||
|
||||
Standard_EXPORT static Handle(Standard_Transient) Factory
|
||||
Standard_EXPORT static const Handle(Standard_Transient)& Factory
|
||||
(const Standard_GUID& aGUID);
|
||||
// Returns a driver corresponding to <aGUID>. Used for plugin.
|
||||
|
||||
|
Reference in New Issue
Block a user