//purpose :
//=======================================================================
-void PCDM_ReadWriter::Open (Storage_BaseDriver& aDriver,
+void PCDM_ReadWriter::Open (const Handle(Storage_BaseDriver)& aDriver,
const TCollection_ExtendedString& aFileName,
const Storage_OpenMode aMode)
{
{
TCollection_ExtendedString theFormat;
- PCDM_BaseDriverPointer theFileDriver;
+ Handle(Storage_BaseDriver) theFileDriver;
// conversion to UTF-8 is done inside
TCollection_AsciiString theFileName (aFileName);
try {
OCC_CATCH_SIGNALS
- Open(*theFileDriver,aFileName,Storage_VSRead);
+ Open(theFileDriver,aFileName,Storage_VSRead);
theFileIsOpen=Standard_True;
Storage_HeaderData hd;
- hd.Read (*theFileDriver);
+ hd.Read (theFileDriver);
const TColStd_SequenceOfAsciiString &refUserInfo = hd.UserInfo();
Standard_Boolean found=Standard_False;
for (Standard_Integer i =1; !found && i<= refUserInfo.Length() ; i++) {
if (!found)
{
Storage_TypeData td;
- td.Read (*theFileDriver);
+ td.Read (theFileDriver);
theFormat = td.Types()->Value(1);
}
}
catch (Standard_Failure const&) {}
-
- if(theFileIsOpen)theFileDriver->Close();
-
- delete theFileDriver;
+ if(theFileIsOpen)
+ {
+ theFileDriver->Close();
+ }
return theFormat;
}
{
TCollection_ExtendedString aFormat;
- Storage_BaseDriver* aFileDriver = 0L;
+ Handle(Storage_BaseDriver) aFileDriver;
if (PCDM::FileDriverType (theIStream, aFileDriver) == PCDM_TOFD_XmlFile)
{
return ::TryXmlDriverType (theIStream);