2535 lines
85 KiB
Diff
2535 lines
85 KiB
Diff
From af336de6fd7984b045b8e67c127c1d12f911cd66 Mon Sep 17 00:00:00 2001
|
|
From: Cirilo Bernardo <cirilo.bernardo@gmail.com>
|
|
Date: Sun, 5 Mar 2017 13:46:16 +1100
|
|
Subject: [PATCH] Hack code to provide UTF8 filename support in MinGW
|
|
|
|
---
|
|
inc/FSD_CmpFile.hxx | 10 +-
|
|
inc/FSD_File.hxx | 13 +-
|
|
src/BRepTools/BRepTools.cxx | 14 +-
|
|
src/FSD/FSD_CmpFile.cxx | 326 +++++++++++++++------------
|
|
src/FSD/FSD_File.cxx | 356 +++++++++++++++++-------------
|
|
src/IGESControl/IGESControl_Writer.cxx | 7 +-
|
|
src/IGESSelect/IGESSelect_WorkLibrary.cxx | 7 +-
|
|
src/OSD/OSD_MAllocHook.cxx | 40 ++--
|
|
src/OSD/OSD_MAllocHook.hxx | 7 +-
|
|
src/OSD/OSD_OpenFile.cxx | 169 +++++++++-----
|
|
src/OSD/OSD_OpenFile.hxx | 65 +++---
|
|
src/StepSelect/StepSelect_WorkLibrary.cxx | 10 +-
|
|
src/VrmlAPI/VrmlAPI_Writer.cxx | 6 +-
|
|
13 files changed, 601 insertions(+), 429 deletions(-)
|
|
|
|
diff --git a/inc/FSD_CmpFile.hxx b/inc/FSD_CmpFile.hxx
|
|
index 57453a341..1351a026a 100644
|
|
--- a/inc/FSD_CmpFile.hxx
|
|
+++ b/inc/FSD_CmpFile.hxx
|
|
@@ -6,6 +6,7 @@
|
|
#ifndef _FSD_CmpFile_HeaderFile
|
|
#define _FSD_CmpFile_HeaderFile
|
|
|
|
+#include <iostream>
|
|
#include <Standard.hxx>
|
|
#include <Standard_DefineAlloc.hxx>
|
|
#include <Standard_Macro.hxx>
|
|
@@ -34,6 +35,7 @@ class TColStd_SequenceOfAsciiString;
|
|
class TColStd_SequenceOfExtendedString;
|
|
class Storage_BaseDriver;
|
|
class Standard_Type;
|
|
+class STREAM_WRAPPER;
|
|
|
|
|
|
|
|
@@ -236,10 +238,7 @@ public:
|
|
Standard_EXPORT Storage_Error Close() ;
|
|
|
|
Standard_EXPORT void Destroy() ;
|
|
-~FSD_CmpFile()
|
|
-{
|
|
- Destroy();
|
|
-}
|
|
+ ~FSD_CmpFile();
|
|
|
|
|
|
|
|
@@ -280,7 +279,8 @@ private:
|
|
Standard_EXPORT void RaiseError (const Handle(Standard_Type)& theFailure) ;
|
|
|
|
|
|
- FSD_FStream myStream;
|
|
+ STREAM_WRAPPER* m_wrapper;
|
|
+ std::iostream* myStream;
|
|
|
|
|
|
};
|
|
diff --git a/inc/FSD_File.hxx b/inc/FSD_File.hxx
|
|
index 7fc8f8788..b14a5fd37 100644
|
|
--- a/inc/FSD_File.hxx
|
|
+++ b/inc/FSD_File.hxx
|
|
@@ -6,6 +6,7 @@
|
|
#ifndef _FSD_File_HeaderFile
|
|
#define _FSD_File_HeaderFile
|
|
|
|
+#include <iostream>
|
|
#include <Standard.hxx>
|
|
#include <Standard_DefineAlloc.hxx>
|
|
#include <Standard_Macro.hxx>
|
|
@@ -32,7 +33,7 @@ class TCollection_ExtendedString;
|
|
class TColStd_SequenceOfAsciiString;
|
|
class TColStd_SequenceOfExtendedString;
|
|
class Storage_BaseDriver;
|
|
-
|
|
+class STREAM_WRAPPER;
|
|
|
|
|
|
//! A general driver which defines as a file, the
|
|
@@ -253,10 +254,8 @@ public:
|
|
Standard_EXPORT Storage_Error Close() ;
|
|
|
|
Standard_EXPORT void Destroy() ;
|
|
-~FSD_File()
|
|
-{
|
|
- Destroy();
|
|
-}
|
|
+
|
|
+ ~FSD_File();
|
|
|
|
|
|
|
|
@@ -295,8 +294,8 @@ private:
|
|
Standard_EXPORT static Standard_CString MagicNumber() ;
|
|
|
|
|
|
- FSD_FStream myStream;
|
|
-
|
|
+ STREAM_WRAPPER* m_wrapper;
|
|
+ std::iostream* myStream;
|
|
|
|
};
|
|
|
|
diff --git a/src/BRepTools/BRepTools.cxx b/src/BRepTools/BRepTools.cxx
|
|
index ec467ee53..33f562676 100644
|
|
--- a/src/BRepTools/BRepTools.cxx
|
|
+++ b/src/BRepTools/BRepTools.cxx
|
|
@@ -611,9 +611,8 @@ Standard_Boolean BRepTools::Write(const TopoDS_Shape& Sh,
|
|
const Standard_CString File,
|
|
const Handle(Message_ProgressIndicator)& PR)
|
|
{
|
|
- ofstream os;
|
|
- OSD_OpenStream(os, File, ios::out);
|
|
- if (!os.rdbuf()->is_open()) return Standard_False;
|
|
+ OPEN_STREAM( os, File, ios::out );
|
|
+ if( !IS_OPEN( os )) return Standard_False;
|
|
|
|
Standard_Boolean isGood = (os.good() && !os.eof());
|
|
if(!isGood)
|
|
@@ -632,7 +631,7 @@ Standard_Boolean BRepTools::Write(const TopoDS_Shape& Sh,
|
|
isGood = os.good();
|
|
|
|
errno = 0;
|
|
- os.close();
|
|
+ CLOSE_STREAM( os );
|
|
isGood = os.good() && isGood && !errno;
|
|
|
|
return isGood;
|
|
@@ -648,10 +647,9 @@ Standard_Boolean BRepTools::Read(TopoDS_Shape& Sh,
|
|
const BRep_Builder& B,
|
|
const Handle(Message_ProgressIndicator)& PR)
|
|
{
|
|
- filebuf fic;
|
|
- istream in(&fic);
|
|
- OSD_OpenFileBuf(fic,File,ios::in);
|
|
- if(!fic.is_open()) return Standard_False;
|
|
+ OPEN_ISTREAM( in, File );
|
|
+
|
|
+ if( !IS_OPEN( in ) ) return Standard_False;
|
|
|
|
BRepTools_ShapeSet SS(B);
|
|
SS.SetProgress(PR);
|
|
diff --git a/src/FSD/FSD_CmpFile.cxx b/src/FSD/FSD_CmpFile.cxx
|
|
index 102d0cc32..ecca0813f 100644
|
|
--- a/src/FSD/FSD_CmpFile.cxx
|
|
+++ b/src/FSD/FSD_CmpFile.cxx
|
|
@@ -14,6 +14,7 @@
|
|
|
|
#include <FSD_CmpFile.ixx>
|
|
#include <OSD.hxx>
|
|
+#include <OSD_OpenFile.hxx>
|
|
|
|
#include <Storage_StreamModeError.hxx>
|
|
#include <Storage_StreamUnknownTypeError.hxx>
|
|
@@ -42,7 +43,13 @@ const Standard_CString MAGICNUMBER = "CMPFILE";
|
|
|
|
FSD_CmpFile::FSD_CmpFile()
|
|
{
|
|
+ m_wrapper = new STREAM_WRAPPER;
|
|
+}
|
|
|
|
+FSD_CmpFile::~FSD_CmpFile()
|
|
+{
|
|
+ Destroy();
|
|
+ delete m_wrapper;
|
|
}
|
|
|
|
//=======================================================================
|
|
@@ -87,45 +94,22 @@ Storage_Error FSD_CmpFile::Open(const TCollection_AsciiString& aName,const Stora
|
|
|
|
if (OpenMode() == Storage_VSNone) {
|
|
|
|
-#if defined(_WNT32)
|
|
- TCollection_ExtendedString aWName(aName);
|
|
- if (aMode == Storage_VSRead) {
|
|
- myStream.open((const wchar_t*)aWName.ToExtString(),ios::in|ios::binary); // ios::nocreate is not portable
|
|
- }
|
|
- else if (aMode == Storage_VSWrite) {
|
|
- myStream.open((const wchar_t*)aWName.ToExtString(),ios::out|ios::binary);
|
|
- }
|
|
- else if (aMode == Storage_VSReadWrite) {
|
|
- myStream.open((const wchar_t*)aWName.ToExtString(),ios::in|ios::out|ios::binary);
|
|
- }
|
|
-#elif !defined(IRIX) && !defined(DECOSF1)
|
|
if (aMode == Storage_VSRead) {
|
|
- myStream.open(aName.ToCString(),ios::in|ios::binary); // ios::nocreate is not portable
|
|
+ myStream = m_wrapper->Open( aName.ToCString(), ios::in|ios::binary); // ios::nocreate is not portable
|
|
}
|
|
else if (aMode == Storage_VSWrite) {
|
|
- myStream.open(aName.ToCString(),ios::out|ios::binary);
|
|
+ myStream = m_wrapper->Open( aName.ToCString(), ios::out|ios::binary); // ios::nocreate is not portable
|
|
}
|
|
else if (aMode == Storage_VSReadWrite) {
|
|
- myStream.open(aName.ToCString(),ios::in|ios::out|ios::binary);
|
|
+ myStream = m_wrapper->Open( aName.ToCString(), ios::in|ios::out|ios::binary); // ios::nocreate is not portable
|
|
}
|
|
-#else
|
|
- if (aMode == Storage_VSRead) {
|
|
- myStream.open(aName.ToCString(),ios::in); // ios::nocreate is not portable
|
|
- }
|
|
- else if (aMode == Storage_VSWrite) {
|
|
- myStream.open(aName.ToCString(),ios::out);
|
|
- }
|
|
- else if (aMode == Storage_VSReadWrite) {
|
|
- myStream.open(aName.ToCString(),ios::in|ios::out);
|
|
- }
|
|
-#endif
|
|
|
|
- if (myStream.fail()) {
|
|
+ if ( !m_wrapper->IsOpen() ) {
|
|
result = Storage_VSOpenError;
|
|
}
|
|
else {
|
|
- myStream.precision(17);
|
|
- myStream.imbue (std::locale::classic()); // use always C locale
|
|
+ myStream->precision(17);
|
|
+ myStream->imbue (std::locale::classic()); // use always C locale
|
|
SetOpenMode(aMode);
|
|
}
|
|
}
|
|
@@ -142,7 +126,10 @@ Storage_Error FSD_CmpFile::Open(const TCollection_AsciiString& aName,const Stora
|
|
|
|
Standard_Boolean FSD_CmpFile::IsEnd()
|
|
{
|
|
- return myStream.eof();
|
|
+ if( NULL == myStream )
|
|
+ return true;
|
|
+
|
|
+ return myStream->eof();
|
|
}
|
|
|
|
//=======================================================================
|
|
@@ -155,7 +142,8 @@ Storage_Error FSD_CmpFile::Close()
|
|
Storage_Error result = Storage_VSOk;
|
|
|
|
if (OpenMode() != Storage_VSNone) {
|
|
- myStream.close();
|
|
+ m_wrapper->Init();
|
|
+ myStream = NULL;
|
|
SetOpenMode(Storage_VSNone);
|
|
}
|
|
else {
|
|
@@ -218,7 +206,7 @@ void FSD_CmpFile::ReadLine(TCollection_AsciiString& buffer)
|
|
while (!IsEnd && !FSD_CmpFile::IsEnd()) {
|
|
Buffer[0] = '\0';
|
|
//myStream.get(Buffer,8192,'\n');
|
|
- myStream.getline(Buffer,8192,'\n');
|
|
+ myStream->getline(Buffer,8192,'\n');
|
|
for (Standard_Size lv = (strlen(Buffer)- 1); lv > 1 && (Buffer[lv] == '\r' || Buffer[lv] == '\n') ;lv--) {
|
|
Buffer[lv] = '\0';
|
|
}
|
|
@@ -256,6 +244,8 @@ void FSD_CmpFile::WriteExtendedLine(const TCollection_ExtendedString& buffer)
|
|
|
|
myStream << (char)0 << "\n";
|
|
#endif
|
|
+ if( NULL == myStream ) return;
|
|
+
|
|
Standard_ExtString extBuffer;
|
|
Standard_Integer i;
|
|
|
|
@@ -265,7 +255,7 @@ void FSD_CmpFile::WriteExtendedLine(const TCollection_ExtendedString& buffer)
|
|
PutExtCharacter(extBuffer[i]);
|
|
}
|
|
|
|
- myStream << "\n";
|
|
+ (*myStream) << "\n";
|
|
}
|
|
|
|
//=======================================================================
|
|
@@ -301,7 +291,7 @@ void FSD_CmpFile::ReadChar(TCollection_AsciiString& buffer, const Standard_Size
|
|
buffer.Clear();
|
|
|
|
while (!IsEnd() && (ccount < rsize)) {
|
|
- myStream.get(c);
|
|
+ myStream->get(c);
|
|
buffer += c;
|
|
ccount++;
|
|
}
|
|
@@ -323,7 +313,7 @@ void FSD_CmpFile::ReadString(TCollection_AsciiString& buffer)
|
|
while (!IsEnd && !FSD_CmpFile::IsEnd()) {
|
|
Buffer[0] = '\0';
|
|
//myStream.get(Buffer,8192,'\n');
|
|
- myStream.getline(Buffer,8192,'\n');
|
|
+ myStream->getline(Buffer,8192,'\n');
|
|
for (Standard_Size lv = (strlen(Buffer)- 1); lv > 1 && (Buffer[lv] == '\r' || Buffer[lv] == '\n') ;lv--) {
|
|
Buffer[lv] = '\0';
|
|
}
|
|
@@ -364,7 +354,7 @@ void FSD_CmpFile::ReadWord(TCollection_AsciiString& buffer)
|
|
buffer.Clear();
|
|
|
|
while (!IsEnd && !FSD_CmpFile::IsEnd()) {
|
|
- myStream.get(c);
|
|
+ myStream->get(c);
|
|
if ((c != ' ') && (c != '\n')) IsEnd = Standard_True;
|
|
}
|
|
|
|
@@ -380,7 +370,7 @@ void FSD_CmpFile::ReadWord(TCollection_AsciiString& buffer)
|
|
}
|
|
*tmpb = c;
|
|
tmpb++; i++;
|
|
- myStream.get(c);
|
|
+ myStream->get(c);
|
|
if ((c == '\n') || (c == ' ')) IsEnd = Standard_True;
|
|
}
|
|
|
|
@@ -427,8 +417,9 @@ void FSD_CmpFile::SkipObject()
|
|
|
|
Storage_BaseDriver& FSD_CmpFile::PutReference(const Standard_Integer aValue)
|
|
{
|
|
- myStream << aValue << " ";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << aValue << " ";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
return *this;
|
|
}
|
|
|
|
@@ -439,11 +430,12 @@ Storage_BaseDriver& FSD_CmpFile::PutReference(const Standard_Integer aValue)
|
|
|
|
Storage_BaseDriver& FSD_CmpFile::PutCharacter(const Standard_Character aValue)
|
|
{
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
unsigned short i;
|
|
|
|
i = aValue;
|
|
- myStream << i << " ";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << i << " ";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
return *this;
|
|
}
|
|
|
|
@@ -454,8 +446,9 @@ Storage_BaseDriver& FSD_CmpFile::PutCharacter(const Standard_Character aValue)
|
|
|
|
Storage_BaseDriver& FSD_CmpFile::PutExtCharacter(const Standard_ExtCharacter aValue)
|
|
{
|
|
- myStream << aValue << " ";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << aValue << " ";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
return *this;
|
|
}
|
|
|
|
@@ -466,8 +459,9 @@ Storage_BaseDriver& FSD_CmpFile::PutExtCharacter(const Standard_ExtCharacter aVa
|
|
|
|
Storage_BaseDriver& FSD_CmpFile::PutInteger(const Standard_Integer aValue)
|
|
{
|
|
- myStream << aValue << " ";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << aValue << " ";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
return *this;
|
|
}
|
|
|
|
@@ -478,8 +472,9 @@ Storage_BaseDriver& FSD_CmpFile::PutInteger(const Standard_Integer aValue)
|
|
|
|
Storage_BaseDriver& FSD_CmpFile::PutBoolean(const Standard_Boolean aValue)
|
|
{
|
|
- myStream << ((Standard_Integer)aValue) << " ";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << ((Standard_Integer)aValue) << " ";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
return *this;
|
|
}
|
|
|
|
@@ -490,8 +485,9 @@ Storage_BaseDriver& FSD_CmpFile::PutBoolean(const Standard_Boolean aValue)
|
|
|
|
Storage_BaseDriver& FSD_CmpFile::PutReal(const Standard_Real aValue)
|
|
{
|
|
- myStream << ((Standard_Real)aValue) << " ";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << ((Standard_Real)aValue) << " ";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
return *this;
|
|
}
|
|
|
|
@@ -502,8 +498,9 @@ Storage_BaseDriver& FSD_CmpFile::PutReal(const Standard_Real aValue)
|
|
|
|
Storage_BaseDriver& FSD_CmpFile::PutShortReal(const Standard_ShortReal aValue)
|
|
{
|
|
- myStream << aValue << " ";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << aValue << " ";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
return *this;
|
|
}
|
|
|
|
@@ -514,7 +511,8 @@ Storage_BaseDriver& FSD_CmpFile::PutShortReal(const Standard_ShortReal aValue)
|
|
|
|
Storage_BaseDriver& FSD_CmpFile::GetReference(Standard_Integer& aValue)
|
|
{
|
|
- if (!(myStream >> aValue)) Storage_StreamTypeMismatchError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamTypeMismatchError::Raise();
|
|
+ if (!((*myStream) >> aValue)) Storage_StreamTypeMismatchError::Raise();
|
|
|
|
return *this;
|
|
}
|
|
@@ -526,13 +524,14 @@ Storage_BaseDriver& FSD_CmpFile::GetReference(Standard_Integer& aValue)
|
|
|
|
Storage_BaseDriver& FSD_CmpFile::GetCharacter(Standard_Character& aValue)
|
|
{
|
|
+ if( NULL == myStream ) Storage_StreamTypeMismatchError::Raise();
|
|
unsigned short i = 0;
|
|
- if (!(myStream >> i)) {
|
|
+ if (!((*myStream) >> i)) {
|
|
// SGI : donne une erreur mais a une bonne valeur pour les caracteres ecrits
|
|
// signes (-80 fait ios::badbit, mais la variable i est initialisee)
|
|
//
|
|
if (i == 0) Storage_StreamTypeMismatchError::Raise();
|
|
- myStream.clear(ios::goodbit);
|
|
+ myStream->clear(ios::goodbit);
|
|
}
|
|
aValue = (char)i;
|
|
|
|
@@ -546,7 +545,8 @@ Storage_BaseDriver& FSD_CmpFile::GetCharacter(Standard_Character& aValue)
|
|
|
|
Storage_BaseDriver& FSD_CmpFile::GetExtCharacter(Standard_ExtCharacter& aValue)
|
|
{
|
|
- if (!(myStream >> aValue)) Storage_StreamTypeMismatchError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamTypeMismatchError::Raise();
|
|
+ if (!((*myStream) >> aValue)) Storage_StreamTypeMismatchError::Raise();
|
|
|
|
return *this;
|
|
}
|
|
@@ -558,7 +558,8 @@ Storage_BaseDriver& FSD_CmpFile::GetExtCharacter(Standard_ExtCharacter& aValue)
|
|
|
|
Storage_BaseDriver& FSD_CmpFile::GetInteger(Standard_Integer& aValue)
|
|
{
|
|
- if (!(myStream >> aValue)) Storage_StreamTypeMismatchError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamTypeMismatchError::Raise();
|
|
+ if (!((*myStream) >> aValue)) Storage_StreamTypeMismatchError::Raise();
|
|
|
|
return *this;
|
|
}
|
|
@@ -570,7 +571,8 @@ Storage_BaseDriver& FSD_CmpFile::GetInteger(Standard_Integer& aValue)
|
|
|
|
Storage_BaseDriver& FSD_CmpFile::GetBoolean(Standard_Boolean& aValue)
|
|
{
|
|
- if (!(myStream >> aValue)) Storage_StreamTypeMismatchError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamTypeMismatchError::Raise();
|
|
+ if (!((*myStream) >> aValue)) Storage_StreamTypeMismatchError::Raise();
|
|
|
|
return *this;
|
|
}
|
|
@@ -582,11 +584,12 @@ Storage_BaseDriver& FSD_CmpFile::GetBoolean(Standard_Boolean& aValue)
|
|
|
|
Storage_BaseDriver& FSD_CmpFile::GetReal(Standard_Real& aValue)
|
|
{
|
|
+ if( NULL == myStream ) Storage_StreamTypeMismatchError::Raise();
|
|
#ifdef BUC60808
|
|
char realbuffer[100];
|
|
|
|
realbuffer[0] = '\0';
|
|
- if (!(myStream >> realbuffer)) {
|
|
+ if (!((*myStream) >> realbuffer)) {
|
|
#ifdef OCCT_DEBUG
|
|
cerr << "%%%ERROR: read error of double at offset " << myStream.tellg() << endl;
|
|
cerr << "\t buffer is" << realbuffer<< endl;
|
|
@@ -603,7 +606,7 @@ Storage_BaseDriver& FSD_CmpFile::GetReal(Standard_Real& aValue)
|
|
|
|
return *this;
|
|
#else
|
|
- if (!(myStream >> aValue)) Storage_StreamTypeMismatchError::Raise();
|
|
+ if (!((*myStream) >> aValue)) Storage_StreamTypeMismatchError::Raise();
|
|
|
|
return *this;
|
|
#endif
|
|
@@ -616,12 +619,13 @@ Storage_BaseDriver& FSD_CmpFile::GetReal(Standard_Real& aValue)
|
|
|
|
Storage_BaseDriver& FSD_CmpFile::GetShortReal(Standard_ShortReal& aValue)
|
|
{
|
|
+ if( NULL == myStream ) Storage_StreamTypeMismatchError::Raise();
|
|
#ifdef BUC60808
|
|
char realbuffer[100];
|
|
Standard_Real r = 0.0;
|
|
|
|
realbuffer[0] = '\0';
|
|
- if (!(myStream >> realbuffer)) Storage_StreamTypeMismatchError::Raise();
|
|
+ if (!((*myStream) >> realbuffer)) Storage_StreamTypeMismatchError::Raise();
|
|
if (!OSD::CStringToReal(realbuffer,r))
|
|
Storage_StreamTypeMismatchError::Raise();
|
|
|
|
@@ -629,7 +633,7 @@ Storage_BaseDriver& FSD_CmpFile::GetShortReal(Standard_ShortReal& aValue)
|
|
|
|
return *this;
|
|
#else
|
|
- if (!(myStream >> aValue)) Storage_StreamTypeMismatchError::Raise();
|
|
+ if (!((*myStream) >> aValue)) Storage_StreamTypeMismatchError::Raise();
|
|
return *this;
|
|
#endif
|
|
}
|
|
@@ -653,9 +657,10 @@ void FSD_CmpFile::Destroy()
|
|
|
|
Storage_Error FSD_CmpFile::BeginWriteInfoSection()
|
|
{
|
|
- myStream << FSD_CmpFile::MagicNumber() << '\n';
|
|
- myStream << "BEGIN_INFO_SECTION\n";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << FSD_CmpFile::MagicNumber() << '\n';
|
|
+ (*myStream) << "BEGIN_INFO_SECTION\n";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
|
|
return Storage_VSOk;
|
|
}
|
|
@@ -675,24 +680,25 @@ void FSD_CmpFile::WriteInfo(const Standard_Integer nbObj,
|
|
const TCollection_ExtendedString& dataType,
|
|
const TColStd_SequenceOfAsciiString& userInfo)
|
|
{
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
Standard_Integer i;
|
|
|
|
- myStream << nbObj;
|
|
- myStream << "\n";
|
|
- myStream << dbVersion.ToCString() << "\n";
|
|
- myStream << date.ToCString() << "\n";
|
|
- myStream << schemaName.ToCString() << "\n";
|
|
- myStream << schemaVersion.ToCString() << "\n";
|
|
+ (*myStream) << nbObj;
|
|
+ (*myStream) << "\n";
|
|
+ (*myStream) << dbVersion.ToCString() << "\n";
|
|
+ (*myStream) << date.ToCString() << "\n";
|
|
+ (*myStream) << schemaName.ToCString() << "\n";
|
|
+ (*myStream) << schemaVersion.ToCString() << "\n";
|
|
WriteExtendedLine(appName);
|
|
- myStream << appVersion.ToCString() << "\n";
|
|
+ (*myStream) << appVersion.ToCString() << "\n";
|
|
WriteExtendedLine(dataType);
|
|
- myStream << userInfo.Length() << "\n";
|
|
+ (*myStream) << userInfo.Length() << "\n";
|
|
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
|
|
for (i = 1; i <= userInfo.Length(); i++) {
|
|
- myStream << userInfo.Value(i).ToCString() << "\n";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << userInfo.Value(i).ToCString() << "\n";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
}
|
|
}
|
|
|
|
@@ -703,8 +709,9 @@ void FSD_CmpFile::WriteInfo(const Standard_Integer nbObj,
|
|
|
|
Storage_Error FSD_CmpFile::EndWriteInfoSection()
|
|
{
|
|
- myStream << "END_INFO_SECTION\n";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << "END_INFO_SECTION\n";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
return Storage_VSOk;
|
|
}
|
|
|
|
@@ -746,7 +753,8 @@ void FSD_CmpFile::ReadInfo(Standard_Integer& nbObj,
|
|
TCollection_ExtendedString& dataType,
|
|
TColStd_SequenceOfAsciiString& userInfo)
|
|
{
|
|
- if (!(myStream >> nbObj)) Storage_StreamTypeMismatchError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamTypeMismatchError::Raise();
|
|
+ if (!((*myStream) >> nbObj)) Storage_StreamTypeMismatchError::Raise();
|
|
|
|
FlushEndOfLine();
|
|
|
|
@@ -760,7 +768,7 @@ void FSD_CmpFile::ReadInfo(Standard_Integer& nbObj,
|
|
|
|
Standard_Integer i,len = 0;
|
|
|
|
- if (!(myStream >> len)) Storage_StreamTypeMismatchError::Raise();
|
|
+ if (!((*myStream) >> len)) Storage_StreamTypeMismatchError::Raise();
|
|
|
|
FlushEndOfLine();
|
|
|
|
@@ -791,8 +799,9 @@ Storage_Error FSD_CmpFile::EndReadInfoSection()
|
|
|
|
Storage_Error FSD_CmpFile::BeginWriteCommentSection()
|
|
{
|
|
- myStream << "BEGIN_COMMENT_SECTION\n";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << "BEGIN_COMMENT_SECTION\n";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
return Storage_VSOk;
|
|
}
|
|
|
|
@@ -803,15 +812,16 @@ Storage_Error FSD_CmpFile::BeginWriteCommentSection()
|
|
|
|
void FSD_CmpFile::WriteComment(const TColStd_SequenceOfExtendedString& aCom)
|
|
{
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
Standard_Integer i,aSize;
|
|
|
|
aSize = aCom.Length();
|
|
- myStream << aSize << "\n";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << aSize << "\n";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
|
|
for (i = 1; i <= aSize; i++) {
|
|
WriteExtendedLine(aCom.Value(i));
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
}
|
|
}
|
|
|
|
@@ -822,8 +832,9 @@ void FSD_CmpFile::WriteComment(const TColStd_SequenceOfExtendedString& aCom)
|
|
|
|
Storage_Error FSD_CmpFile::EndWriteCommentSection()
|
|
{
|
|
- myStream << "END_COMMENT_SECTION\n";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << "END_COMMENT_SECTION\n";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
return Storage_VSOk;
|
|
}
|
|
|
|
@@ -844,10 +855,11 @@ Storage_Error FSD_CmpFile::BeginReadCommentSection()
|
|
|
|
void FSD_CmpFile::ReadComment(TColStd_SequenceOfExtendedString& aCom)
|
|
{
|
|
+ if( NULL == myStream ) Storage_StreamTypeMismatchError::Raise();
|
|
TCollection_ExtendedString line;
|
|
Standard_Integer len,i;
|
|
|
|
- if (!(myStream >> len)) Storage_StreamTypeMismatchError::Raise();
|
|
+ if (!((*myStream) >> len)) Storage_StreamTypeMismatchError::Raise();
|
|
|
|
FlushEndOfLine();
|
|
|
|
@@ -875,8 +887,9 @@ Storage_Error FSD_CmpFile::EndReadCommentSection()
|
|
|
|
Storage_Error FSD_CmpFile::BeginWriteTypeSection()
|
|
{
|
|
- myStream << "BEGIN_TYPE_SECTION\n";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << "BEGIN_TYPE_SECTION\n";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
return Storage_VSOk;
|
|
}
|
|
|
|
@@ -887,8 +900,9 @@ Storage_Error FSD_CmpFile::BeginWriteTypeSection()
|
|
|
|
void FSD_CmpFile::SetTypeSectionSize(const Standard_Integer aSize)
|
|
{
|
|
- myStream << aSize << "\n";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << aSize << "\n";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
}
|
|
|
|
//=======================================================================
|
|
@@ -899,8 +913,9 @@ void FSD_CmpFile::SetTypeSectionSize(const Standard_Integer aSize)
|
|
void FSD_CmpFile::WriteTypeInformations(const Standard_Integer typeNum,
|
|
const TCollection_AsciiString& typeName)
|
|
{
|
|
- myStream << typeNum << " " << typeName.ToCString() << "\n";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << typeNum << " " << typeName.ToCString() << "\n";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
}
|
|
|
|
//=======================================================================
|
|
@@ -910,8 +925,9 @@ void FSD_CmpFile::WriteTypeInformations(const Standard_Integer typeNum,
|
|
|
|
Storage_Error FSD_CmpFile::EndWriteTypeSection()
|
|
{
|
|
- myStream << "END_TYPE_SECTION\n";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << "END_TYPE_SECTION\n";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
return Storage_VSOk;
|
|
}
|
|
|
|
@@ -932,9 +948,10 @@ Storage_Error FSD_CmpFile::BeginReadTypeSection()
|
|
|
|
Standard_Integer FSD_CmpFile::TypeSectionSize()
|
|
{
|
|
+ if( NULL == myStream ) Storage_StreamTypeMismatchError::Raise();
|
|
Standard_Integer i;
|
|
|
|
- if (!(myStream >> i)) Storage_StreamTypeMismatchError::Raise();
|
|
+ if (!((*myStream) >> i)) Storage_StreamTypeMismatchError::Raise();
|
|
|
|
FlushEndOfLine();
|
|
|
|
@@ -949,8 +966,9 @@ Standard_Integer FSD_CmpFile::TypeSectionSize()
|
|
void FSD_CmpFile::ReadTypeInformations(Standard_Integer& typeNum,
|
|
TCollection_AsciiString& typeName)
|
|
{
|
|
- if (!(myStream >> typeNum)) Storage_StreamTypeMismatchError::Raise();
|
|
- if (!(myStream >> typeName)) Storage_StreamTypeMismatchError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamTypeMismatchError::Raise();
|
|
+ if (!((*myStream) >> typeNum)) Storage_StreamTypeMismatchError::Raise();
|
|
+ if (!((*myStream) >> typeName)) Storage_StreamTypeMismatchError::Raise();
|
|
FlushEndOfLine();
|
|
}
|
|
|
|
@@ -972,8 +990,9 @@ Storage_Error FSD_CmpFile::EndReadTypeSection()
|
|
|
|
Storage_Error FSD_CmpFile::BeginWriteRootSection()
|
|
{
|
|
- myStream << "BEGIN_ROOT_SECTION\n";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << "BEGIN_ROOT_SECTION\n";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
return Storage_VSOk;
|
|
}
|
|
|
|
@@ -984,8 +1003,9 @@ Storage_Error FSD_CmpFile::BeginWriteRootSection()
|
|
|
|
void FSD_CmpFile::SetRootSectionSize(const Standard_Integer aSize)
|
|
{
|
|
- myStream << aSize << "\n";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << aSize << "\n";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
}
|
|
|
|
//=======================================================================
|
|
@@ -995,8 +1015,9 @@ void FSD_CmpFile::SetRootSectionSize(const Standard_Integer aSize)
|
|
|
|
void FSD_CmpFile::WriteRoot(const TCollection_AsciiString& rootName, const Standard_Integer aRef, const TCollection_AsciiString& rootType)
|
|
{
|
|
- myStream << aRef << " " << rootName.ToCString() << " " << rootType.ToCString() << "\n";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << aRef << " " << rootName.ToCString() << " " << rootType.ToCString() << "\n";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
}
|
|
|
|
//=======================================================================
|
|
@@ -1006,8 +1027,9 @@ void FSD_CmpFile::WriteRoot(const TCollection_AsciiString& rootName, const Stand
|
|
|
|
Storage_Error FSD_CmpFile::EndWriteRootSection()
|
|
{
|
|
- myStream << "END_ROOT_SECTION\n";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << "END_ROOT_SECTION\n";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
return Storage_VSOk;
|
|
}
|
|
|
|
@@ -1028,9 +1050,10 @@ Storage_Error FSD_CmpFile::BeginReadRootSection()
|
|
|
|
Standard_Integer FSD_CmpFile::RootSectionSize()
|
|
{
|
|
+ if( NULL == myStream ) Storage_StreamTypeMismatchError::Raise();
|
|
Standard_Integer i;
|
|
|
|
- if (!(myStream >> i)) Storage_StreamTypeMismatchError::Raise();
|
|
+ if (!((*myStream) >> i)) Storage_StreamTypeMismatchError::Raise();
|
|
|
|
FlushEndOfLine();
|
|
|
|
@@ -1044,7 +1067,8 @@ Standard_Integer FSD_CmpFile::RootSectionSize()
|
|
|
|
void FSD_CmpFile::ReadRoot(TCollection_AsciiString& rootName, Standard_Integer& aRef,TCollection_AsciiString& rootType)
|
|
{
|
|
- if (!(myStream >> aRef)) Storage_StreamTypeMismatchError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamTypeMismatchError::Raise();
|
|
+ if (!((*myStream) >> aRef)) Storage_StreamTypeMismatchError::Raise();
|
|
ReadWord(rootName);
|
|
ReadWord(rootType);
|
|
}
|
|
@@ -1067,8 +1091,9 @@ Storage_Error FSD_CmpFile::EndReadRootSection()
|
|
|
|
Storage_Error FSD_CmpFile::BeginWriteRefSection()
|
|
{
|
|
- myStream << "BEGIN_REF_SECTION\n";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << "BEGIN_REF_SECTION\n";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
return Storage_VSOk;
|
|
}
|
|
|
|
@@ -1079,8 +1104,9 @@ Storage_Error FSD_CmpFile::BeginWriteRefSection()
|
|
|
|
void FSD_CmpFile::SetRefSectionSize(const Standard_Integer aSize)
|
|
{
|
|
- myStream << aSize << "\n";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << aSize << "\n";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
}
|
|
|
|
//=======================================================================
|
|
@@ -1091,8 +1117,9 @@ void FSD_CmpFile::SetRefSectionSize(const Standard_Integer aSize)
|
|
void FSD_CmpFile::WriteReferenceType(const Standard_Integer reference,
|
|
const Standard_Integer typeNum)
|
|
{
|
|
- myStream << reference << " " << typeNum << "\n";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << reference << " " << typeNum << "\n";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
}
|
|
|
|
//=======================================================================
|
|
@@ -1102,8 +1129,9 @@ void FSD_CmpFile::WriteReferenceType(const Standard_Integer reference,
|
|
|
|
Storage_Error FSD_CmpFile::EndWriteRefSection()
|
|
{
|
|
- myStream << "END_REF_SECTION\n";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << "END_REF_SECTION\n";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
return Storage_VSOk;
|
|
}
|
|
|
|
@@ -1124,9 +1152,10 @@ Storage_Error FSD_CmpFile::BeginReadRefSection()
|
|
|
|
Standard_Integer FSD_CmpFile::RefSectionSize()
|
|
{
|
|
+ if( NULL == myStream ) Storage_StreamTypeMismatchError::Raise();
|
|
Standard_Integer i;
|
|
|
|
- if (!(myStream >> i)) Storage_StreamTypeMismatchError::Raise();
|
|
+ if (!((*myStream) >> i)) Storage_StreamTypeMismatchError::Raise();
|
|
FlushEndOfLine();
|
|
|
|
return i;
|
|
@@ -1140,8 +1169,9 @@ Standard_Integer FSD_CmpFile::RefSectionSize()
|
|
void FSD_CmpFile::ReadReferenceType(Standard_Integer& reference,
|
|
Standard_Integer& typeNum)
|
|
{
|
|
- if (!(myStream >> reference)) Storage_StreamTypeMismatchError::Raise();
|
|
- if (!(myStream >> typeNum)) Storage_StreamTypeMismatchError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamTypeMismatchError::Raise();
|
|
+ if (!((*myStream) >> reference)) Storage_StreamTypeMismatchError::Raise();
|
|
+ if (!((*myStream) >> typeNum)) Storage_StreamTypeMismatchError::Raise();
|
|
FlushEndOfLine();
|
|
}
|
|
|
|
@@ -1163,8 +1193,9 @@ Storage_Error FSD_CmpFile::EndReadRefSection()
|
|
|
|
Storage_Error FSD_CmpFile::BeginWriteDataSection()
|
|
{
|
|
- myStream << "BEGIN_DATA_SECTION";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << "BEGIN_DATA_SECTION";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
return Storage_VSOk;
|
|
}
|
|
|
|
@@ -1176,8 +1207,10 @@ Storage_Error FSD_CmpFile::BeginWriteDataSection()
|
|
void FSD_CmpFile::WritePersistentObjectHeader(const Standard_Integer aRef,
|
|
const Standard_Integer aType)
|
|
{
|
|
- myStream << "\n#" << aRef << "%" << aType << " ";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamTypeMismatchError::Raise();
|
|
+ (*myStream) << "\n#" << aRef << "%" << aType << " ";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
}
|
|
|
|
//=======================================================================
|
|
@@ -1187,7 +1220,8 @@ void FSD_CmpFile::WritePersistentObjectHeader(const Standard_Integer aRef,
|
|
|
|
void FSD_CmpFile::BeginWritePersistentObjectData()
|
|
{
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
}
|
|
|
|
//=======================================================================
|
|
@@ -1197,7 +1231,8 @@ void FSD_CmpFile::BeginWritePersistentObjectData()
|
|
|
|
void FSD_CmpFile::BeginWriteObjectData()
|
|
{
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
}
|
|
|
|
//=======================================================================
|
|
@@ -1207,7 +1242,8 @@ void FSD_CmpFile::BeginWriteObjectData()
|
|
|
|
void FSD_CmpFile::EndWriteObjectData()
|
|
{
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
}
|
|
|
|
//=======================================================================
|
|
@@ -1217,7 +1253,8 @@ void FSD_CmpFile::EndWriteObjectData()
|
|
|
|
void FSD_CmpFile::EndWritePersistentObjectData()
|
|
{
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
}
|
|
|
|
//=======================================================================
|
|
@@ -1227,8 +1264,9 @@ void FSD_CmpFile::EndWritePersistentObjectData()
|
|
|
|
Storage_Error FSD_CmpFile::EndWriteDataSection()
|
|
{
|
|
- myStream << "\nEND_DATA_SECTION\n";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << "\nEND_DATA_SECTION\n";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
return Storage_VSOk;
|
|
}
|
|
|
|
@@ -1250,29 +1288,30 @@ Storage_Error FSD_CmpFile::BeginReadDataSection()
|
|
void FSD_CmpFile::ReadPersistentObjectHeader(Standard_Integer& aRef,
|
|
Standard_Integer& aType)
|
|
{
|
|
+ if( NULL == myStream ) Storage_StreamTypeMismatchError::Raise();
|
|
char c;
|
|
|
|
- myStream.get(c);
|
|
+ myStream->get(c);
|
|
|
|
while (c != '#') {
|
|
if (IsEnd() || (c != ' ') || (c == '\r')|| (c == '\n')) {
|
|
Storage_StreamFormatError::Raise();
|
|
}
|
|
- myStream.get(c);
|
|
+ myStream->get(c);
|
|
}
|
|
|
|
- if (!(myStream >> aRef)) Storage_StreamTypeMismatchError::Raise();
|
|
+ if (!((*myStream) >> aRef)) Storage_StreamTypeMismatchError::Raise();
|
|
|
|
- myStream.get(c);
|
|
+ myStream->get(c);
|
|
|
|
while (c != '%') {
|
|
if (IsEnd() || (c != ' ') || (c == '\r')|| (c == '\n')) {
|
|
Storage_StreamFormatError::Raise();
|
|
}
|
|
- myStream.get(c);
|
|
+ myStream->get(c);
|
|
}
|
|
|
|
- if (!(myStream >> aType)) Storage_StreamTypeMismatchError::Raise();
|
|
+ if (!((*myStream) >> aType)) Storage_StreamTypeMismatchError::Raise();
|
|
// cout << "REF:" << aRef << " TYPE:"<< aType << endl;
|
|
}
|
|
|
|
@@ -1313,17 +1352,18 @@ void FSD_CmpFile::EndReadObjectData()
|
|
|
|
void FSD_CmpFile::EndReadPersistentObjectData()
|
|
{
|
|
+ if( NULL == myStream ) Storage_StreamFormatError::Raise();
|
|
char c;
|
|
|
|
- myStream.get(c);
|
|
+ myStream->get(c);
|
|
while (c != '\n' && (c != '\r')) {
|
|
if (IsEnd() || (c != ' ')) {
|
|
Storage_StreamFormatError::Raise();
|
|
}
|
|
- myStream.get(c);
|
|
+ myStream->get(c);
|
|
}
|
|
if (c == '\r') {
|
|
- myStream.get(c);
|
|
+ myStream->get(c);
|
|
}
|
|
// cout << "EndReadPersistentObjectData" << endl;
|
|
}
|
|
@@ -1345,14 +1385,16 @@ Storage_Error FSD_CmpFile::EndReadDataSection()
|
|
|
|
Storage_Position FSD_CmpFile::Tell()
|
|
{
|
|
+ if( NULL == myStream ) return -1;
|
|
+
|
|
switch (OpenMode()) {
|
|
case Storage_VSRead:
|
|
- return (Storage_Position) myStream.tellp();
|
|
+ return (Storage_Position) myStream->tellp();
|
|
case Storage_VSWrite:
|
|
- return (Storage_Position) myStream.tellg();
|
|
+ return (Storage_Position) myStream->tellg();
|
|
case Storage_VSReadWrite: {
|
|
- Storage_Position aPosR = (Storage_Position) myStream.tellp();
|
|
- Storage_Position aPosW = (Storage_Position) myStream.tellg();
|
|
+ Storage_Position aPosR = (Storage_Position) myStream->tellp();
|
|
+ Storage_Position aPosW = (Storage_Position) myStream->tellg();
|
|
if (aPosR < aPosW)
|
|
return aPosW;
|
|
else
|
|
diff --git a/src/FSD/FSD_File.cxx b/src/FSD/FSD_File.cxx
|
|
index 393fed9ca..47f6e5db3 100644
|
|
--- a/src/FSD/FSD_File.cxx
|
|
+++ b/src/FSD/FSD_File.cxx
|
|
@@ -14,6 +14,7 @@
|
|
|
|
#include <FSD_File.ixx>
|
|
#include <OSD.hxx>
|
|
+#include <OSD_OpenFile.hxx>
|
|
|
|
const Standard_CString MAGICNUMBER = "FSDFILE";
|
|
const Standard_CString ENDOFNORMALEXTENDEDSECTION = "BEGIN_REF_SECTION";
|
|
@@ -28,7 +29,14 @@ const Standard_Integer SIZEOFNORMALEXTENDEDSECTION = 16;
|
|
|
|
FSD_File::FSD_File()
|
|
{
|
|
+ m_wrapper = new STREAM_WRAPPER;
|
|
+ myStream = NULL;
|
|
+}
|
|
|
|
+FSD_File::~FSD_File()
|
|
+{
|
|
+ Destroy();
|
|
+ delete m_wrapper;
|
|
}
|
|
|
|
//=======================================================================
|
|
@@ -73,34 +81,22 @@ Storage_Error FSD_File::Open(const TCollection_AsciiString& aName,const Storage_
|
|
|
|
if (OpenMode() == Storage_VSNone) {
|
|
|
|
-#ifdef _MSC_VER
|
|
- TCollection_ExtendedString aWName(aName);
|
|
if (aMode == Storage_VSRead) {
|
|
- myStream.open( (const wchar_t*) aWName.ToExtString(),ios::in); // ios::nocreate is not portable
|
|
+ myStream = m_wrapper->Open( aName.ToCString(), ios::in); // ios::nocreate is not portable
|
|
}
|
|
else if (aMode == Storage_VSWrite) {
|
|
- myStream.open( (const wchar_t*) aWName.ToExtString(),ios::out);
|
|
+ myStream = m_wrapper->Open( aName.ToCString(), ios::out); // ios::nocreate is not portable
|
|
}
|
|
else if (aMode == Storage_VSReadWrite) {
|
|
- myStream.open( (const wchar_t*) aWName.ToExtString(),ios::in|ios::out);
|
|
-#else
|
|
- if (aMode == Storage_VSRead) {
|
|
- myStream.open(aName.ToCString(),ios::in); // ios::nocreate is not portable
|
|
- }
|
|
- else if (aMode == Storage_VSWrite) {
|
|
- myStream.open(aName.ToCString(),ios::out);
|
|
- }
|
|
- else if (aMode == Storage_VSReadWrite) {
|
|
- myStream.open(aName.ToCString(),ios::in|ios::out);
|
|
-#endif
|
|
+ myStream = m_wrapper->Open( aName.ToCString(), ios::in|ios::out); // ios::nocreate is not portable
|
|
}
|
|
|
|
- if (myStream.fail()) {
|
|
+ if ( !m_wrapper->IsOpen() ) {
|
|
result = Storage_VSOpenError;
|
|
}
|
|
else {
|
|
- myStream.precision(17);
|
|
- myStream.imbue (std::locale::classic()); // use always C locale
|
|
+ myStream->precision(17);
|
|
+ myStream->imbue (std::locale::classic()); // use always C locale
|
|
SetOpenMode(aMode);
|
|
}
|
|
}
|
|
@@ -118,7 +114,10 @@ Storage_Error FSD_File::Open(const TCollection_AsciiString& aName,const Storage_
|
|
|
|
Standard_Boolean FSD_File::IsEnd()
|
|
{
|
|
- return myStream.eof();
|
|
+ if( NULL == myStream )
|
|
+ return true;
|
|
+
|
|
+ return myStream->eof();
|
|
}
|
|
|
|
//=======================================================================
|
|
@@ -131,7 +130,8 @@ Storage_Error FSD_File::Close()
|
|
Storage_Error result = Storage_VSOk;
|
|
|
|
if (OpenMode() != Storage_VSNone) {
|
|
- myStream.close();
|
|
+ m_wrapper->Init();
|
|
+ myStream = NULL;
|
|
SetOpenMode(Storage_VSNone);
|
|
}
|
|
else {
|
|
@@ -190,7 +190,7 @@ void FSD_File::ReadLine(TCollection_AsciiString& buffer)
|
|
|
|
while (!IsEnd && !FSD_File::IsEnd()) {
|
|
Buffer[0] = '\0';
|
|
- myStream.getline(Buffer,8192,'\n');
|
|
+ myStream->getline(Buffer,8192,'\n');
|
|
|
|
// char c;
|
|
// if (myStream.get(c) && c != '\n') {
|
|
@@ -211,6 +211,8 @@ void FSD_File::ReadLine(TCollection_AsciiString& buffer)
|
|
|
|
void FSD_File::WriteExtendedLine(const TCollection_ExtendedString& buffer)
|
|
{
|
|
+ if( NULL == myStream ) return;
|
|
+
|
|
Standard_ExtString extBuffer;
|
|
Standard_Integer i,c,d;
|
|
|
|
@@ -220,10 +222,10 @@ void FSD_File::WriteExtendedLine(const TCollection_ExtendedString& buffer)
|
|
c = (extBuffer[i] & 0x0000FF00 ) >> 8 ;
|
|
d = extBuffer[i] & 0x000000FF;
|
|
|
|
- myStream << (char)c << (char)d;
|
|
+ (*myStream) << (char)c << (char)d;
|
|
}
|
|
|
|
- myStream << (char)0 << "\n";
|
|
+ (*myStream) << (char)0 << "\n";
|
|
}
|
|
|
|
//=======================================================================
|
|
@@ -233,6 +235,8 @@ void FSD_File::WriteExtendedLine(const TCollection_ExtendedString& buffer)
|
|
|
|
void FSD_File::ReadExtendedLine(TCollection_ExtendedString& buffer)
|
|
{
|
|
+ if( NULL == myStream ) return;
|
|
+
|
|
char c = '\0';
|
|
Standard_ExtCharacter i = 0,j,count = 0;
|
|
Standard_Boolean fin = Standard_False;
|
|
@@ -241,7 +245,7 @@ void FSD_File::ReadExtendedLine(TCollection_ExtendedString& buffer)
|
|
buffer.Clear();
|
|
|
|
while (!fin && !IsEnd()) {
|
|
- myStream.get(c);
|
|
+ myStream->get(c);
|
|
|
|
if (c == tg[count]) count++;
|
|
else count = 0;
|
|
@@ -251,7 +255,7 @@ void FSD_File::ReadExtendedLine(TCollection_ExtendedString& buffer)
|
|
if (c == '\0') fin = Standard_True;
|
|
i = (i << 8);
|
|
|
|
- myStream.get(c);
|
|
+ myStream->get(c);
|
|
if (c == tg[count]) count++;
|
|
else count = 0;
|
|
if (count < SIZEOFNORMALEXTENDEDSECTION) {
|
|
@@ -285,7 +289,7 @@ void FSD_File::ReadChar(TCollection_AsciiString& buffer, const Standard_Size rsi
|
|
buffer.Clear();
|
|
|
|
while (!IsEnd() && (ccount < rsize)) {
|
|
- myStream.get(c);
|
|
+ myStream->get(c);
|
|
buffer += c;
|
|
ccount++;
|
|
}
|
|
@@ -306,7 +310,7 @@ void FSD_File::ReadString(TCollection_AsciiString& buffer)
|
|
|
|
while (!IsEnd && !FSD_File::IsEnd()) {
|
|
Buffer[0] = '\0';
|
|
- myStream.getline(Buffer,8192,'\n');
|
|
+ myStream->getline(Buffer,8192,'\n');
|
|
bpos = Buffer;
|
|
|
|
// LeftAdjust
|
|
@@ -345,7 +349,7 @@ void FSD_File::ReadWord(TCollection_AsciiString& buffer)
|
|
buffer.Clear();
|
|
|
|
while (!IsEnd && !FSD_File::IsEnd()) {
|
|
- myStream.get(c);
|
|
+ myStream->get(c);
|
|
if ((c != ' ') && (c != '\n')) IsEnd = Standard_True;
|
|
}
|
|
|
|
@@ -361,7 +365,7 @@ void FSD_File::ReadWord(TCollection_AsciiString& buffer)
|
|
}
|
|
*tmpb = c;
|
|
tmpb++; i++;
|
|
- myStream.get(c);
|
|
+ myStream->get(c);
|
|
if ((c == '\n') || (c == ' ')) IsEnd = Standard_True;
|
|
}
|
|
|
|
@@ -408,8 +412,9 @@ void FSD_File::SkipObject()
|
|
|
|
Storage_BaseDriver& FSD_File::PutReference(const Standard_Integer aValue)
|
|
{
|
|
- myStream << aValue << " ";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << aValue << " ";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
return *this;
|
|
}
|
|
|
|
@@ -420,11 +425,12 @@ Storage_BaseDriver& FSD_File::PutReference(const Standard_Integer aValue)
|
|
|
|
Storage_BaseDriver& FSD_File::PutCharacter(const Standard_Character aValue)
|
|
{
|
|
- unsigned short i;
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
|
|
+ unsigned short i;
|
|
i = aValue;
|
|
- myStream << i << " ";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << i << " ";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
return *this;
|
|
}
|
|
|
|
@@ -435,8 +441,10 @@ Storage_BaseDriver& FSD_File::PutCharacter(const Standard_Character aValue)
|
|
|
|
Storage_BaseDriver& FSD_File::PutExtCharacter(const Standard_ExtCharacter aValue)
|
|
{
|
|
- myStream << aValue << " ";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+
|
|
+ (*myStream) << aValue << " ";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
return *this;
|
|
}
|
|
|
|
@@ -447,8 +455,9 @@ Storage_BaseDriver& FSD_File::PutExtCharacter(const Standard_ExtCharacter aValue
|
|
|
|
Storage_BaseDriver& FSD_File::PutInteger(const Standard_Integer aValue)
|
|
{
|
|
- myStream << aValue << " ";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << aValue << " ";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
return *this;
|
|
}
|
|
|
|
@@ -459,8 +468,9 @@ Storage_BaseDriver& FSD_File::PutInteger(const Standard_Integer aValue)
|
|
|
|
Storage_BaseDriver& FSD_File::PutBoolean(const Standard_Boolean aValue)
|
|
{
|
|
- myStream << ((Standard_Integer)aValue) << " ";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << ((Standard_Integer)aValue) << " ";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
return *this;
|
|
}
|
|
|
|
@@ -471,8 +481,9 @@ Storage_BaseDriver& FSD_File::PutBoolean(const Standard_Boolean aValue)
|
|
|
|
Storage_BaseDriver& FSD_File::PutReal(const Standard_Real aValue)
|
|
{
|
|
- myStream << ((Standard_Real)aValue) << " ";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << ((Standard_Real)aValue) << " ";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
return *this;
|
|
}
|
|
|
|
@@ -483,8 +494,9 @@ Storage_BaseDriver& FSD_File::PutReal(const Standard_Real aValue)
|
|
|
|
Storage_BaseDriver& FSD_File::PutShortReal(const Standard_ShortReal aValue)
|
|
{
|
|
- myStream << aValue << " ";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << aValue << " ";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
return *this;
|
|
}
|
|
|
|
@@ -495,7 +507,8 @@ Storage_BaseDriver& FSD_File::PutShortReal(const Standard_ShortReal aValue)
|
|
|
|
Storage_BaseDriver& FSD_File::GetReference(Standard_Integer& aValue)
|
|
{
|
|
- if (!(myStream >> aValue)) Storage_StreamTypeMismatchError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamTypeMismatchError::Raise();
|
|
+ if (!((*myStream) >> aValue)) Storage_StreamTypeMismatchError::Raise();
|
|
|
|
return *this;
|
|
}
|
|
@@ -507,13 +520,14 @@ Storage_BaseDriver& FSD_File::GetReference(Standard_Integer& aValue)
|
|
|
|
Storage_BaseDriver& FSD_File::GetCharacter(Standard_Character& aValue)
|
|
{
|
|
+ if( NULL == myStream ) Storage_StreamTypeMismatchError::Raise();
|
|
unsigned short i = 0;
|
|
- if (!(myStream >> i)) {
|
|
+ if (!((*myStream) >> i)) {
|
|
// SGI : donne une erreur mais a une bonne valeur pour les caracteres ecrits
|
|
// signes (-80 fait ios::badbit, mais la variable i est initialisee)
|
|
//
|
|
if (i == 0) Storage_StreamTypeMismatchError::Raise();
|
|
- myStream.clear(ios::goodbit); // .clear(0) is not portable
|
|
+ myStream->clear(ios::goodbit); // .clear(0) is not portable
|
|
}
|
|
aValue = (char)i;
|
|
|
|
@@ -527,7 +541,8 @@ Storage_BaseDriver& FSD_File::GetCharacter(Standard_Character& aValue)
|
|
|
|
Storage_BaseDriver& FSD_File::GetExtCharacter(Standard_ExtCharacter& aValue)
|
|
{
|
|
- if (!(myStream >> aValue)) Storage_StreamTypeMismatchError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamTypeMismatchError::Raise();
|
|
+ if (!((*myStream) >> aValue)) Storage_StreamTypeMismatchError::Raise();
|
|
|
|
return *this;
|
|
}
|
|
@@ -539,7 +554,8 @@ Storage_BaseDriver& FSD_File::GetExtCharacter(Standard_ExtCharacter& aValue)
|
|
|
|
Storage_BaseDriver& FSD_File::GetInteger(Standard_Integer& aValue)
|
|
{
|
|
- if (!(myStream >> aValue)) Storage_StreamTypeMismatchError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamTypeMismatchError::Raise();
|
|
+ if (!((*myStream) >> aValue)) Storage_StreamTypeMismatchError::Raise();
|
|
|
|
return *this;
|
|
}
|
|
@@ -551,7 +567,8 @@ Storage_BaseDriver& FSD_File::GetInteger(Standard_Integer& aValue)
|
|
|
|
Storage_BaseDriver& FSD_File::GetBoolean(Standard_Boolean& aValue)
|
|
{
|
|
- if (!(myStream >> aValue)) Storage_StreamTypeMismatchError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamTypeMismatchError::Raise();
|
|
+ if (!((*myStream) >> aValue)) Storage_StreamTypeMismatchError::Raise();
|
|
|
|
return *this;
|
|
}
|
|
@@ -563,16 +580,17 @@ Storage_BaseDriver& FSD_File::GetBoolean(Standard_Boolean& aValue)
|
|
|
|
Storage_BaseDriver& FSD_File::GetReal(Standard_Real& aValue)
|
|
{
|
|
+ if( NULL == myStream ) Storage_StreamTypeMismatchError::Raise();
|
|
#ifdef USEOSDREAL
|
|
char realbuffer[100];
|
|
|
|
realbuffer[0] = '\0';
|
|
- if (!(myStream >> realbuffer)) Storage_StreamTypeMismatchError::Raise();
|
|
+ if (!((*myStream) >> realbuffer)) Storage_StreamTypeMismatchError::Raise();
|
|
if (!OSD::CStringToReal(realbuffer,aValue)) Storage_StreamTypeMismatchError::Raise();
|
|
|
|
return *this;
|
|
#else
|
|
- if (!(myStream >> aValue)) Storage_StreamTypeMismatchError::Raise();
|
|
+ if (!((*myStream) >> aValue)) Storage_StreamTypeMismatchError::Raise();
|
|
|
|
return *this;
|
|
#endif
|
|
@@ -585,19 +603,20 @@ Storage_BaseDriver& FSD_File::GetReal(Standard_Real& aValue)
|
|
|
|
Storage_BaseDriver& FSD_File::GetShortReal(Standard_ShortReal& aValue)
|
|
{
|
|
+ if( NULL == myStream ) Storage_StreamTypeMismatchError::Raise();
|
|
#ifdef USEOSDREAL
|
|
char realbuffer[100];
|
|
Standard_Real r = 0.0;
|
|
|
|
realbuffer[0] = '\0';
|
|
- if (!(myStream >> realbuffer)) Storage_StreamTypeMismatchError::Raise();
|
|
+ if (!((*myStream) >> realbuffer)) Storage_StreamTypeMismatchError::Raise();
|
|
if (!OSD::CStringToReal(realbuffer,r)) Storage_StreamTypeMismatchError::Raise();
|
|
|
|
aValue = r;
|
|
|
|
return *this;
|
|
#else
|
|
- if (!(myStream >> aValue)) Storage_StreamTypeMismatchError::Raise();
|
|
+ if (!((*myStream) >> aValue)) Storage_StreamTypeMismatchError::Raise();
|
|
return *this;
|
|
#endif
|
|
}
|
|
@@ -621,9 +640,11 @@ void FSD_File::Destroy()
|
|
|
|
Storage_Error FSD_File::BeginWriteInfoSection()
|
|
{
|
|
- myStream << FSD_File::MagicNumber() << '\n';
|
|
- myStream << "BEGIN_INFO_SECTION\n";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+
|
|
+ (*myStream) << FSD_File::MagicNumber() << '\n';
|
|
+ (*myStream) << "BEGIN_INFO_SECTION\n";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
|
|
return Storage_VSOk;
|
|
}
|
|
@@ -643,24 +664,25 @@ void FSD_File::WriteInfo(const Standard_Integer nbObj,
|
|
const TCollection_ExtendedString& dataType,
|
|
const TColStd_SequenceOfAsciiString& userInfo)
|
|
{
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
Standard_Integer i;
|
|
|
|
- myStream << nbObj;
|
|
- myStream << "\n";
|
|
- myStream << dbVersion.ToCString() << "\n";
|
|
- myStream << date.ToCString() << "\n";
|
|
- myStream << schemaName.ToCString() << "\n";
|
|
- myStream << schemaVersion.ToCString() << "\n";
|
|
+ (*myStream) << nbObj;
|
|
+ (*myStream) << "\n";
|
|
+ (*myStream) << dbVersion.ToCString() << "\n";
|
|
+ (*myStream) << date.ToCString() << "\n";
|
|
+ (*myStream) << schemaName.ToCString() << "\n";
|
|
+ (*myStream) << schemaVersion.ToCString() << "\n";
|
|
WriteExtendedLine(appName);
|
|
- myStream << appVersion.ToCString() << "\n";
|
|
+ (*myStream) << appVersion.ToCString() << "\n";
|
|
WriteExtendedLine(dataType);
|
|
- myStream << userInfo.Length() << "\n";
|
|
+ (*myStream) << userInfo.Length() << "\n";
|
|
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
|
|
for (i = 1; i <= userInfo.Length(); i++) {
|
|
- myStream << userInfo.Value(i).ToCString() << "\n";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << userInfo.Value(i).ToCString() << "\n";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
}
|
|
}
|
|
|
|
@@ -671,8 +693,9 @@ void FSD_File::WriteInfo(const Standard_Integer nbObj,
|
|
|
|
Storage_Error FSD_File::EndWriteInfoSection()
|
|
{
|
|
- myStream << "END_INFO_SECTION\n";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << "END_INFO_SECTION\n";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
return Storage_VSOk;
|
|
}
|
|
|
|
@@ -714,7 +737,8 @@ void FSD_File::ReadInfo(Standard_Integer& nbObj,
|
|
TCollection_ExtendedString& dataType,
|
|
TColStd_SequenceOfAsciiString& userInfo)
|
|
{
|
|
- if (!(myStream >> nbObj)) Storage_StreamTypeMismatchError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamTypeMismatchError::Raise();
|
|
+ if (!((*myStream) >> nbObj)) Storage_StreamTypeMismatchError::Raise();
|
|
|
|
FlushEndOfLine();
|
|
|
|
@@ -728,7 +752,7 @@ void FSD_File::ReadInfo(Standard_Integer& nbObj,
|
|
|
|
Standard_Integer i,len = 0;
|
|
|
|
- if (!(myStream >> len)) Storage_StreamTypeMismatchError::Raise();
|
|
+ if (!((*myStream) >> len)) Storage_StreamTypeMismatchError::Raise();
|
|
|
|
FlushEndOfLine();
|
|
|
|
@@ -759,8 +783,9 @@ Storage_Error FSD_File::EndReadInfoSection()
|
|
|
|
Storage_Error FSD_File::BeginWriteCommentSection()
|
|
{
|
|
- myStream << "BEGIN_COMMENT_SECTION\n";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << "BEGIN_COMMENT_SECTION\n";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
return Storage_VSOk;
|
|
}
|
|
|
|
@@ -771,15 +796,16 @@ Storage_Error FSD_File::BeginWriteCommentSection()
|
|
|
|
void FSD_File::WriteComment(const TColStd_SequenceOfExtendedString& aCom)
|
|
{
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
Standard_Integer i,aSize;
|
|
|
|
aSize = aCom.Length();
|
|
- myStream << aSize << "\n";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << aSize << "\n";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
|
|
for (i = 1; i <= aSize; i++) {
|
|
WriteExtendedLine(aCom.Value(i));
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
}
|
|
}
|
|
|
|
@@ -790,8 +816,9 @@ void FSD_File::WriteComment(const TColStd_SequenceOfExtendedString& aCom)
|
|
|
|
Storage_Error FSD_File::EndWriteCommentSection()
|
|
{
|
|
- myStream << "END_COMMENT_SECTION\n";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << "END_COMMENT_SECTION\n";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
return Storage_VSOk;
|
|
}
|
|
|
|
@@ -812,10 +839,11 @@ Storage_Error FSD_File::BeginReadCommentSection()
|
|
|
|
void FSD_File::ReadComment(TColStd_SequenceOfExtendedString& aCom)
|
|
{
|
|
+ if( NULL == myStream ) Storage_StreamTypeMismatchError::Raise();
|
|
TCollection_ExtendedString line;
|
|
Standard_Integer len,i;
|
|
|
|
- if (!(myStream >> len)) Storage_StreamTypeMismatchError::Raise();
|
|
+ if (!((*myStream) >> len)) Storage_StreamTypeMismatchError::Raise();
|
|
|
|
FlushEndOfLine();
|
|
|
|
@@ -843,8 +871,9 @@ Storage_Error FSD_File::EndReadCommentSection()
|
|
|
|
Storage_Error FSD_File::BeginWriteTypeSection()
|
|
{
|
|
- myStream << "BEGIN_TYPE_SECTION\n";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << "BEGIN_TYPE_SECTION\n";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
return Storage_VSOk;
|
|
}
|
|
|
|
@@ -855,8 +884,9 @@ Storage_Error FSD_File::BeginWriteTypeSection()
|
|
|
|
void FSD_File::SetTypeSectionSize(const Standard_Integer aSize)
|
|
{
|
|
- myStream << aSize << "\n";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << aSize << "\n";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
}
|
|
|
|
//=======================================================================
|
|
@@ -867,8 +897,9 @@ void FSD_File::SetTypeSectionSize(const Standard_Integer aSize)
|
|
void FSD_File::WriteTypeInformations(const Standard_Integer typeNum,
|
|
const TCollection_AsciiString& typeName)
|
|
{
|
|
- myStream << typeNum << " " << typeName.ToCString() << "\n";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << typeNum << " " << typeName.ToCString() << "\n";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
}
|
|
|
|
//=======================================================================
|
|
@@ -878,8 +909,9 @@ void FSD_File::WriteTypeInformations(const Standard_Integer typeNum,
|
|
|
|
Storage_Error FSD_File::EndWriteTypeSection()
|
|
{
|
|
- myStream << "END_TYPE_SECTION\n";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << "END_TYPE_SECTION\n";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
return Storage_VSOk;
|
|
}
|
|
|
|
@@ -900,9 +932,10 @@ Storage_Error FSD_File::BeginReadTypeSection()
|
|
|
|
Standard_Integer FSD_File::TypeSectionSize()
|
|
{
|
|
+ if( NULL == myStream ) Storage_StreamTypeMismatchError::Raise();
|
|
Standard_Integer i;
|
|
|
|
- if (!(myStream >> i)) Storage_StreamTypeMismatchError::Raise();
|
|
+ if (!((*myStream) >> i)) Storage_StreamTypeMismatchError::Raise();
|
|
|
|
FlushEndOfLine();
|
|
|
|
@@ -917,8 +950,9 @@ Standard_Integer FSD_File::TypeSectionSize()
|
|
void FSD_File::ReadTypeInformations(Standard_Integer& typeNum,
|
|
TCollection_AsciiString& typeName)
|
|
{
|
|
- if (!(myStream >> typeNum)) Storage_StreamTypeMismatchError::Raise();
|
|
- if (!(myStream >> typeName)) Storage_StreamTypeMismatchError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamTypeMismatchError::Raise();
|
|
+ if (!((*myStream) >> typeNum)) Storage_StreamTypeMismatchError::Raise();
|
|
+ if (!((*myStream) >> typeName)) Storage_StreamTypeMismatchError::Raise();
|
|
FlushEndOfLine();
|
|
}
|
|
|
|
@@ -940,8 +974,9 @@ Storage_Error FSD_File::EndReadTypeSection()
|
|
|
|
Storage_Error FSD_File::BeginWriteRootSection()
|
|
{
|
|
- myStream << "BEGIN_ROOT_SECTION\n";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << "BEGIN_ROOT_SECTION\n";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
return Storage_VSOk;
|
|
}
|
|
|
|
@@ -952,8 +987,9 @@ Storage_Error FSD_File::BeginWriteRootSection()
|
|
|
|
void FSD_File::SetRootSectionSize(const Standard_Integer aSize)
|
|
{
|
|
- myStream << aSize << "\n";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << aSize << "\n";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
}
|
|
|
|
//=======================================================================
|
|
@@ -963,8 +999,9 @@ void FSD_File::SetRootSectionSize(const Standard_Integer aSize)
|
|
|
|
void FSD_File::WriteRoot(const TCollection_AsciiString& rootName, const Standard_Integer aRef, const TCollection_AsciiString& rootType)
|
|
{
|
|
- myStream << aRef << " " << rootName.ToCString() << " " << rootType.ToCString() << "\n";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << aRef << " " << rootName.ToCString() << " " << rootType.ToCString() << "\n";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
}
|
|
|
|
//=======================================================================
|
|
@@ -974,8 +1011,9 @@ void FSD_File::WriteRoot(const TCollection_AsciiString& rootName, const Standard
|
|
|
|
Storage_Error FSD_File::EndWriteRootSection()
|
|
{
|
|
- myStream << "END_ROOT_SECTION\n";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << "END_ROOT_SECTION\n";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
return Storage_VSOk;
|
|
}
|
|
|
|
@@ -996,9 +1034,10 @@ Storage_Error FSD_File::BeginReadRootSection()
|
|
|
|
Standard_Integer FSD_File::RootSectionSize()
|
|
{
|
|
+ if( NULL == myStream ) Storage_StreamTypeMismatchError::Raise();
|
|
Standard_Integer i;
|
|
|
|
- if (!(myStream >> i)) Storage_StreamTypeMismatchError::Raise();
|
|
+ if (!((*myStream) >> i)) Storage_StreamTypeMismatchError::Raise();
|
|
|
|
FlushEndOfLine();
|
|
|
|
@@ -1012,7 +1051,8 @@ Standard_Integer FSD_File::RootSectionSize()
|
|
|
|
void FSD_File::ReadRoot(TCollection_AsciiString& rootName, Standard_Integer& aRef,TCollection_AsciiString& rootType)
|
|
{
|
|
- if (!(myStream >> aRef)) Storage_StreamTypeMismatchError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamTypeMismatchError::Raise();
|
|
+ if (!((*myStream) >> aRef)) Storage_StreamTypeMismatchError::Raise();
|
|
ReadWord(rootName);
|
|
ReadWord(rootType);
|
|
}
|
|
@@ -1035,8 +1075,9 @@ Storage_Error FSD_File::EndReadRootSection()
|
|
|
|
Storage_Error FSD_File::BeginWriteRefSection()
|
|
{
|
|
- myStream << "BEGIN_REF_SECTION\n";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << "BEGIN_REF_SECTION\n";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
return Storage_VSOk;
|
|
}
|
|
|
|
@@ -1047,8 +1088,9 @@ Storage_Error FSD_File::BeginWriteRefSection()
|
|
|
|
void FSD_File::SetRefSectionSize(const Standard_Integer aSize)
|
|
{
|
|
- myStream << aSize << "\n";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << aSize << "\n";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
}
|
|
|
|
//=======================================================================
|
|
@@ -1059,8 +1101,9 @@ void FSD_File::SetRefSectionSize(const Standard_Integer aSize)
|
|
void FSD_File::WriteReferenceType(const Standard_Integer reference,
|
|
const Standard_Integer typeNum)
|
|
{
|
|
- myStream << reference << " " << typeNum << "\n";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << reference << " " << typeNum << "\n";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
}
|
|
|
|
//=======================================================================
|
|
@@ -1070,8 +1113,9 @@ void FSD_File::WriteReferenceType(const Standard_Integer reference,
|
|
|
|
Storage_Error FSD_File::EndWriteRefSection()
|
|
{
|
|
- myStream << "END_REF_SECTION\n";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << "END_REF_SECTION\n";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
return Storage_VSOk;
|
|
}
|
|
|
|
@@ -1092,9 +1136,10 @@ Storage_Error FSD_File::BeginReadRefSection()
|
|
|
|
Standard_Integer FSD_File::RefSectionSize()
|
|
{
|
|
+ if( NULL == myStream ) Storage_StreamTypeMismatchError::Raise();
|
|
Standard_Integer i;
|
|
|
|
- if (!(myStream >> i)) Storage_StreamTypeMismatchError::Raise();
|
|
+ if (!((*myStream) >> i)) Storage_StreamTypeMismatchError::Raise();
|
|
FlushEndOfLine();
|
|
|
|
return i;
|
|
@@ -1108,8 +1153,9 @@ Standard_Integer FSD_File::RefSectionSize()
|
|
void FSD_File::ReadReferenceType(Standard_Integer& reference,
|
|
Standard_Integer& typeNum)
|
|
{
|
|
- if (!(myStream >> reference)) Storage_StreamTypeMismatchError::Raise();
|
|
- if (!(myStream >> typeNum)) Storage_StreamTypeMismatchError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamTypeMismatchError::Raise();
|
|
+ if (!((*myStream) >> reference)) Storage_StreamTypeMismatchError::Raise();
|
|
+ if (!((*myStream) >> typeNum)) Storage_StreamTypeMismatchError::Raise();
|
|
FlushEndOfLine();
|
|
}
|
|
|
|
@@ -1131,8 +1177,9 @@ Storage_Error FSD_File::EndReadRefSection()
|
|
|
|
Storage_Error FSD_File::BeginWriteDataSection()
|
|
{
|
|
- myStream << "BEGIN_DATA_SECTION";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << "BEGIN_DATA_SECTION";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
return Storage_VSOk;
|
|
}
|
|
|
|
@@ -1144,8 +1191,9 @@ Storage_Error FSD_File::BeginWriteDataSection()
|
|
void FSD_File::WritePersistentObjectHeader(const Standard_Integer aRef,
|
|
const Standard_Integer aType)
|
|
{
|
|
- myStream << "\n#" << aRef << "=%" << aType;
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << "\n#" << aRef << "=%" << aType;
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
}
|
|
|
|
//=======================================================================
|
|
@@ -1155,8 +1203,9 @@ void FSD_File::WritePersistentObjectHeader(const Standard_Integer aRef,
|
|
|
|
void FSD_File::BeginWritePersistentObjectData()
|
|
{
|
|
- myStream << "( ";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << "( ";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
}
|
|
|
|
//=======================================================================
|
|
@@ -1166,8 +1215,9 @@ void FSD_File::BeginWritePersistentObjectData()
|
|
|
|
void FSD_File::BeginWriteObjectData()
|
|
{
|
|
- myStream << "( ";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << "( ";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
}
|
|
|
|
//=======================================================================
|
|
@@ -1177,8 +1227,9 @@ void FSD_File::BeginWriteObjectData()
|
|
|
|
void FSD_File::EndWriteObjectData()
|
|
{
|
|
- myStream << ") ";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << ") ";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
}
|
|
|
|
//=======================================================================
|
|
@@ -1188,8 +1239,9 @@ void FSD_File::EndWriteObjectData()
|
|
|
|
void FSD_File::EndWritePersistentObjectData()
|
|
{
|
|
- myStream << ")";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << ")";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
}
|
|
|
|
//=======================================================================
|
|
@@ -1199,8 +1251,9 @@ void FSD_File::EndWritePersistentObjectData()
|
|
|
|
Storage_Error FSD_File::EndWriteDataSection()
|
|
{
|
|
- myStream << "\nEND_DATA_SECTION\n";
|
|
- if (myStream.bad()) Storage_StreamWriteError::Raise();
|
|
+ if( NULL == myStream ) Storage_StreamWriteError::Raise();
|
|
+ (*myStream) << "\nEND_DATA_SECTION\n";
|
|
+ if (myStream->bad()) Storage_StreamWriteError::Raise();
|
|
return Storage_VSOk;
|
|
}
|
|
|
|
@@ -1222,39 +1275,40 @@ Storage_Error FSD_File::BeginReadDataSection()
|
|
void FSD_File::ReadPersistentObjectHeader(Standard_Integer& aRef,
|
|
Standard_Integer& aType)
|
|
{
|
|
+ if( NULL == myStream ) Storage_StreamFormatError::Raise();
|
|
char c;
|
|
|
|
- myStream.get(c);
|
|
+ myStream->get(c);
|
|
|
|
while (c != '#') {
|
|
if (IsEnd() || (c != ' ') || (c == '\n')) {
|
|
Storage_StreamFormatError::Raise();
|
|
}
|
|
- myStream.get(c);
|
|
+ myStream->get(c);
|
|
}
|
|
|
|
- if (!(myStream >> aRef)) Storage_StreamTypeMismatchError::Raise();
|
|
+ if (!((*myStream) >> aRef)) Storage_StreamTypeMismatchError::Raise();
|
|
|
|
- myStream.get(c);
|
|
+ myStream->get(c);
|
|
|
|
|
|
while (c != '=') {
|
|
if (IsEnd() || (c != ' ') || (c == '\n')) {
|
|
Storage_StreamFormatError::Raise();
|
|
}
|
|
- myStream.get(c);
|
|
+ myStream->get(c);
|
|
}
|
|
|
|
- myStream.get(c);
|
|
+ myStream->get(c);
|
|
|
|
while (c != '%') {
|
|
if (IsEnd() || (c != ' ') || (c == '\n')) {
|
|
Storage_StreamFormatError::Raise();
|
|
}
|
|
- myStream.get(c);
|
|
+ myStream->get(c);
|
|
}
|
|
|
|
- if (!(myStream >> aType)) Storage_StreamTypeMismatchError::Raise();
|
|
+ if (!((*myStream) >> aType)) Storage_StreamTypeMismatchError::Raise();
|
|
// cout << "REF:" << aRef << " TYPE:"<< aType << endl;
|
|
}
|
|
|
|
@@ -1265,13 +1319,14 @@ void FSD_File::ReadPersistentObjectHeader(Standard_Integer& aRef,
|
|
|
|
void FSD_File::BeginReadPersistentObjectData()
|
|
{
|
|
+ if( NULL == myStream ) Storage_StreamFormatError::Raise();
|
|
char c;
|
|
- myStream.get(c);
|
|
+ myStream->get(c);
|
|
while (c != '(') {
|
|
if (IsEnd() || (c != ' ') || (c == '\n')) {
|
|
Storage_StreamFormatError::Raise();
|
|
}
|
|
- myStream.get(c);
|
|
+ myStream->get(c);
|
|
}
|
|
|
|
//cout << "BeginReadPersistentObjectData" << endl;
|
|
@@ -1284,14 +1339,15 @@ void FSD_File::BeginReadPersistentObjectData()
|
|
|
|
void FSD_File::BeginReadObjectData()
|
|
{
|
|
+ if( NULL == myStream ) Storage_StreamFormatError::Raise();
|
|
|
|
char c;
|
|
- myStream.get(c);
|
|
+ myStream->get(c);
|
|
while (c != '(') {
|
|
if (IsEnd() || (c != ' ') || (c == '\n')) {
|
|
Storage_StreamFormatError::Raise();
|
|
}
|
|
- myStream.get(c);
|
|
+ myStream->get(c);
|
|
}
|
|
|
|
// cout << "BeginReadObjectData" << endl;
|
|
@@ -1304,14 +1360,15 @@ void FSD_File::BeginReadObjectData()
|
|
|
|
void FSD_File::EndReadObjectData()
|
|
{
|
|
+ if( NULL == myStream ) Storage_StreamFormatError::Raise();
|
|
|
|
char c;
|
|
- myStream.get(c);
|
|
+ myStream->get(c);
|
|
while (c != ')') {
|
|
if (IsEnd() || (c != ' ') || (c == '\n')) {
|
|
Storage_StreamFormatError::Raise();
|
|
}
|
|
- myStream.get(c);
|
|
+ myStream->get(c);
|
|
}
|
|
|
|
// cout << "EndReadObjectData" << endl;
|
|
@@ -1324,23 +1381,24 @@ void FSD_File::EndReadObjectData()
|
|
|
|
void FSD_File::EndReadPersistentObjectData()
|
|
{
|
|
+ if( NULL == myStream ) Storage_StreamFormatError::Raise();
|
|
|
|
char c;
|
|
|
|
- myStream.get(c);
|
|
+ myStream->get(c);
|
|
while (c != ')') {
|
|
if (IsEnd() || (c != ' ') || (c == '\n')) {
|
|
Storage_StreamFormatError::Raise();
|
|
}
|
|
- myStream.get(c);
|
|
+ myStream->get(c);
|
|
}
|
|
|
|
- myStream.get(c);
|
|
+ myStream->get(c);
|
|
while (c != '\n') {
|
|
if (IsEnd() || (c != ' ')) {
|
|
Storage_StreamFormatError::Raise();
|
|
}
|
|
- myStream.get(c);
|
|
+ myStream->get(c);
|
|
}
|
|
// cout << "EndReadPersistentObjectData" << endl;
|
|
}
|
|
@@ -1362,14 +1420,16 @@ Storage_Error FSD_File::EndReadDataSection()
|
|
|
|
Storage_Position FSD_File::Tell()
|
|
{
|
|
+ if( NULL == myStream ) return -1;
|
|
+
|
|
switch (OpenMode()) {
|
|
case Storage_VSRead:
|
|
- return (Storage_Position) myStream.tellp();
|
|
+ return (Storage_Position) myStream->tellp();
|
|
case Storage_VSWrite:
|
|
- return (Storage_Position) myStream.tellg();
|
|
+ return (Storage_Position) myStream->tellg();
|
|
case Storage_VSReadWrite: {
|
|
- Storage_Position aPosR = (Storage_Position) myStream.tellp();
|
|
- Storage_Position aPosW = (Storage_Position) myStream.tellg();
|
|
+ Storage_Position aPosR = (Storage_Position) myStream->tellp();
|
|
+ Storage_Position aPosW = (Storage_Position) myStream->tellg();
|
|
if (aPosR < aPosW)
|
|
return aPosW;
|
|
else
|
|
diff --git a/src/IGESControl/IGESControl_Writer.cxx b/src/IGESControl/IGESControl_Writer.cxx
|
|
index 99ef6ddc6..f58a069ed 100644
|
|
--- a/src/IGESControl/IGESControl_Writer.cxx
|
|
+++ b/src/IGESControl/IGESControl_Writer.cxx
|
|
@@ -268,16 +268,15 @@ Standard_Boolean IGESControl_Writer::Write
|
|
Standard_Boolean IGESControl_Writer::Write
|
|
(const Standard_CString file, const Standard_Boolean fnes)
|
|
{
|
|
- ofstream fout;
|
|
- OSD_OpenStream(fout,file,ios::out);
|
|
- if (!fout) return Standard_False;
|
|
+ OPEN_OSTREAM( fout, file );
|
|
+ if( !IS_OPEN( fout ) ) return Standard_False;
|
|
#ifdef OCCT_DEBUG
|
|
cout<<" Ecriture fichier ("<< (fnes ? "fnes" : "IGES") <<"): "<<file<<endl;
|
|
#endif
|
|
Standard_Boolean res = Write (fout,fnes);
|
|
|
|
errno = 0;
|
|
- fout.close();
|
|
+ CLOSE_STREAM( fout );
|
|
res = fout.good() && res && !errno;
|
|
|
|
return res;
|
|
diff --git a/src/IGESSelect/IGESSelect_WorkLibrary.cxx b/src/IGESSelect/IGESSelect_WorkLibrary.cxx
|
|
index b7f0aa490..dcf1e747b 100644
|
|
--- a/src/IGESSelect/IGESSelect_WorkLibrary.cxx
|
|
+++ b/src/IGESSelect/IGESSelect_WorkLibrary.cxx
|
|
@@ -97,9 +97,8 @@ static Handle(IGESData_FileProtocol) IGESProto;
|
|
DeclareAndCast(IGESData_Protocol,prot,ctx.Protocol());
|
|
|
|
if (igesmod.IsNull() || prot.IsNull()) return Standard_False;
|
|
- ofstream fout;
|
|
- OSD_OpenStream(fout,ctx.FileName(),ios::out );
|
|
- if (!fout) {
|
|
+ OPEN_OSTREAM( fout, ctx.FileName() );
|
|
+ if( !IS_OPEN( fout ) ) {
|
|
ctx.CCheck(0)->AddFail("IGES File could not be created");
|
|
sout<<" - IGES File could not be created : " << ctx.FileName() << endl; return 0;
|
|
}
|
|
@@ -127,7 +126,7 @@ static Handle(IGESData_FileProtocol) IGESProto;
|
|
Standard_Boolean status = VW.Print(fout); sout<<" Done"<<endl;
|
|
|
|
errno = 0;
|
|
- fout.close();
|
|
+ CLOSE_STREAM( fout );
|
|
status = fout.good() && status && !errno;
|
|
if(errno)
|
|
sout << strerror(errno) << endl;
|
|
diff --git a/src/OSD/OSD_MAllocHook.cxx b/src/OSD/OSD_MAllocHook.cxx
|
|
index e9e3d9c68..aba7afa21 100644
|
|
--- a/src/OSD/OSD_MAllocHook.cxx
|
|
+++ b/src/OSD/OSD_MAllocHook.cxx
|
|
@@ -14,6 +14,7 @@
|
|
// commercial license or contractual agreement.
|
|
|
|
#include <OSD_MAllocHook.hxx>
|
|
+#include <OSD_OpenFile.hxx>
|
|
|
|
#if !defined(WNT) || defined(__MINGW32__) || defined(__BORLANDC__)
|
|
#if !defined __STDC_LIMIT_MACROS
|
|
@@ -205,7 +206,8 @@ void OSD_MAllocHook::SetCallback(Callback* theCB)
|
|
OSD_MAllocHook::LogFileHandler::LogFileHandler()
|
|
: myBreakSize(0)
|
|
{
|
|
- myLogFile.imbue (std::locale ("C"));
|
|
+ myLogFile = NULL;
|
|
+ m_wrapper = new STREAM_WRAPPER;
|
|
}
|
|
|
|
//=======================================================================
|
|
@@ -216,6 +218,7 @@ OSD_MAllocHook::LogFileHandler::LogFileHandler()
|
|
OSD_MAllocHook::LogFileHandler::~LogFileHandler()
|
|
{
|
|
Close();
|
|
+ delete m_wrapper;
|
|
}
|
|
|
|
//=======================================================================
|
|
@@ -226,13 +229,15 @@ OSD_MAllocHook::LogFileHandler::~LogFileHandler()
|
|
Standard_Boolean OSD_MAllocHook::LogFileHandler::Open(const char* theFileName)
|
|
{
|
|
Close();
|
|
- myLogFile.open (theFileName);
|
|
- if (!myLogFile.is_open())
|
|
+ myLogFile = m_wrapper->Open( theFileName, ios::out );
|
|
+
|
|
+ if (!m_wrapper->IsOpen())
|
|
{
|
|
return Standard_False;
|
|
}
|
|
|
|
- myLogFile << "Operation type; Request Number; Block Size\n"
|
|
+ myLogFile->imbue (std::locale ("C"));
|
|
+ (*myLogFile) << "Operation type; Request Number; Block Size\n"
|
|
"------------------------------------------\n";
|
|
return Standard_True;
|
|
}
|
|
@@ -244,9 +249,10 @@ Standard_Boolean OSD_MAllocHook::LogFileHandler::Open(const char* theFileName)
|
|
|
|
void OSD_MAllocHook::LogFileHandler::Close()
|
|
{
|
|
- if (myLogFile.is_open())
|
|
+ if ( m_wrapper->IsOpen() )
|
|
{
|
|
- myLogFile.close();
|
|
+ m_wrapper->Init();
|
|
+ myLogFile = NULL;
|
|
}
|
|
}
|
|
|
|
@@ -371,11 +377,13 @@ Standard_Boolean OSD_MAllocHook::LogFileHandler::MakeReport
|
|
fclose(aLogFile);
|
|
|
|
// print the report
|
|
- std::ofstream aRepFile (theOutFile);
|
|
- if(!aRepFile.is_open())
|
|
+ OPEN_STREAM( aRepFile, theOutFile, ios::out );
|
|
+
|
|
+ if( !IS_OPEN( aRepFile ) )
|
|
{
|
|
return Standard_False;
|
|
}
|
|
+
|
|
aRepFile.imbue (std::locale ("C"));
|
|
|
|
aRepFile << std::setw(20) << "BlockSize "
|
|
@@ -424,7 +432,7 @@ Standard_Boolean OSD_MAllocHook::LogFileHandler::MakeReport
|
|
<< std::setw(20) << aTotalLeftSize << ' '
|
|
<< std::setw(20) << aTotalPeakSize << std::endl;
|
|
|
|
- aRepFile.close();
|
|
+ CLOSE_STREAM( aRepFile );
|
|
return Standard_True;
|
|
}
|
|
|
|
@@ -437,10 +445,10 @@ void OSD_MAllocHook::LogFileHandler::AllocEvent
|
|
(size_t theSize,
|
|
long theRequestNum)
|
|
{
|
|
- if (myLogFile.is_open())
|
|
+ if ( m_wrapper->IsOpen())
|
|
{
|
|
myMutex.Lock();
|
|
- myLogFile << "alloc "<< std::setw(10) << theRequestNum
|
|
+ (*myLogFile) << "alloc "<< std::setw(10) << theRequestNum
|
|
<< std::setw(20) << theSize << std::endl;
|
|
if (myBreakSize == theSize)
|
|
place_for_breakpoint();
|
|
@@ -458,10 +466,10 @@ void OSD_MAllocHook::LogFileHandler::FreeEvent
|
|
size_t theSize,
|
|
long theRequestNum)
|
|
{
|
|
- if (myLogFile.is_open())
|
|
+ if (m_wrapper->IsOpen())
|
|
{
|
|
myMutex.Lock();
|
|
- myLogFile << "free " << std::setw(20) << theRequestNum
|
|
+ (*myLogFile) << "free " << std::setw(20) << theRequestNum
|
|
<< std::setw(20) << theSize << std::endl;
|
|
myMutex.Unlock();
|
|
}
|
|
@@ -528,8 +536,8 @@ void OSD_MAllocHook::CollectBySize::Reset()
|
|
Standard_Boolean OSD_MAllocHook::CollectBySize::MakeReport(const char* theOutFile)
|
|
{
|
|
// print the report
|
|
- std::ofstream aRepFile(theOutFile);
|
|
- if (!aRepFile.is_open())
|
|
+ OPEN_STREAM( aRepFile, theOutFile, ios::out );
|
|
+ if( !IS_OPEN( aRepFile ) )
|
|
return Standard_False;
|
|
std::locale aCLoc("C");
|
|
aRepFile.imbue(aCLoc);
|
|
@@ -575,7 +583,7 @@ Standard_Boolean OSD_MAllocHook::CollectBySize::MakeReport(const char* theOutFil
|
|
<< std::setw(20) << aTotAlloc << ' '
|
|
<< std::setw(20) << myTotalLeftSize << ' '
|
|
<< std::setw(20) << myTotalPeakSize << std::endl;
|
|
- aRepFile.close();
|
|
+ CLOSE_STREAM( aRepFile );
|
|
return Standard_True;
|
|
}
|
|
|
|
diff --git a/src/OSD/OSD_MAllocHook.hxx b/src/OSD/OSD_MAllocHook.hxx
|
|
index 175a58857..fd1840a7d 100644
|
|
--- a/src/OSD/OSD_MAllocHook.hxx
|
|
+++ b/src/OSD/OSD_MAllocHook.hxx
|
|
@@ -19,7 +19,9 @@
|
|
#include <Standard_TypeDef.hxx>
|
|
#include <Standard_Mutex.hxx>
|
|
#include <stdio.h>
|
|
-#include <fstream>
|
|
+#include <iostream>
|
|
+
|
|
+class STREAM_WRAPPER;
|
|
|
|
/**
|
|
* This class provides the possibility to set callback for memory
|
|
@@ -101,7 +103,8 @@ public:
|
|
Standard_EXPORT virtual void FreeEvent(void*, size_t, long);
|
|
|
|
private:
|
|
- std::ofstream myLogFile;
|
|
+ STREAM_WRAPPER* m_wrapper;
|
|
+ std::ostream* myLogFile;
|
|
Standard_Mutex myMutex;
|
|
size_t myBreakSize;
|
|
};
|
|
diff --git a/src/OSD/OSD_OpenFile.cxx b/src/OSD/OSD_OpenFile.cxx
|
|
index 32e5ccd07..1530afccf 100644
|
|
--- a/src/OSD/OSD_OpenFile.cxx
|
|
+++ b/src/OSD/OSD_OpenFile.cxx
|
|
@@ -11,6 +11,7 @@
|
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
|
// commercial license or contractual agreement.
|
|
|
|
+#include <locale>
|
|
#include <OSD_OpenFile.hxx>
|
|
#include <TCollection_ExtendedString.hxx>
|
|
#include <NCollection_UtfString.hxx>
|
|
@@ -23,7 +24,7 @@ FILE* OSD_OpenFile(const char* theName,
|
|
const char* theMode)
|
|
{
|
|
FILE* aFile = 0;
|
|
-#if defined(_WIN32) && !defined(__MINGW32__) && !defined(__MINGW64__)
|
|
+#if defined(_WIN32)
|
|
// file name is treated as UTF-8 string and converted to UTF-16 one
|
|
const TCollection_ExtendedString aFileNameW (theName, Standard_True);
|
|
const TCollection_ExtendedString aFileModeW (theMode, Standard_True);
|
|
@@ -43,7 +44,7 @@ FILE* OSD_OpenFile(const TCollection_ExtendedString& theName,
|
|
const char* theMode)
|
|
{
|
|
FILE* aFile = 0;
|
|
-#if defined(_WIN32) && !defined(__MINGW32__) && !defined(__MINGW64__)
|
|
+#if defined(_WIN32)
|
|
const TCollection_ExtendedString aFileModeW (theMode, Standard_True);
|
|
aFile = ::_wfopen ((const wchar_t* )theName.ToExtString(),
|
|
(const wchar_t* )aFileModeW.ToExtString());
|
|
@@ -55,71 +56,123 @@ FILE* OSD_OpenFile(const TCollection_ExtendedString& theName,
|
|
return aFile;
|
|
}
|
|
|
|
-// ==============================================
|
|
-// function : OSD_OpenFileBuf
|
|
-// purpose : Opens file buffer
|
|
-// ==============================================
|
|
-void OSD_OpenFileBuf(std::filebuf& theBuff,
|
|
- const char* theName,
|
|
- const std::ios_base::openmode theMode)
|
|
+#include <iostream>
|
|
+#include <sys/types.h>
|
|
+#include <sys/stat.h>
|
|
+#include <fcntl.h>
|
|
+
|
|
+
|
|
+STREAM_WRAPPER::STREAM_WRAPPER()
|
|
{
|
|
-#if defined(_WIN32) && !defined(__MINGW32__) && !defined(__MINGW64__)
|
|
- // file name is treated as UTF-8 string and converted to UTF-16 one
|
|
- const TCollection_ExtendedString aFileNameW (theName, Standard_True);
|
|
- theBuff.open ((const wchar_t* )aFileNameW.ToExtString(), theMode);
|
|
-#else
|
|
- theBuff.open (theName, theMode);
|
|
-#endif
|
|
+ m_buf = NULL;
|
|
+ m_stream = NULL;
|
|
+ return;
|
|
}
|
|
|
|
-// ==============================================
|
|
-// function : OSD_OpenFileBuf
|
|
-// purpose : Opens file buffer
|
|
-// ==============================================
|
|
-void OSD_OpenFileBuf(std::filebuf& theBuff,
|
|
- const TCollection_ExtendedString& theName,
|
|
- const std::ios_base::openmode theMode)
|
|
+
|
|
+STREAM_WRAPPER::~STREAM_WRAPPER()
|
|
{
|
|
-#if defined(_WIN32) && !defined(__MINGW32__) && !defined(__MINGW64__)
|
|
- theBuff.open ((const wchar_t* )theName.ToExtString(), theMode);
|
|
-#else
|
|
- // conversion in UTF-8 for linux
|
|
- NCollection_Utf8String aString((const Standard_Utf16Char*)theName.ToExtString());
|
|
- theBuff.open (aString.ToCString(),theMode);
|
|
-#endif
|
|
+ if( NULL != m_stream )
|
|
+ delete m_stream;
|
|
+
|
|
+ if( NULL != m_buf )
|
|
+ {
|
|
+ m_buf->close(); // ensure file is closed regardless of m_buf's destructor
|
|
+ delete m_buf;
|
|
+ }
|
|
+
|
|
+ return;
|
|
}
|
|
|
|
-// ==============================================
|
|
-// function : OSD_OpenStream
|
|
-// purpose : Opens file stream
|
|
-// ==============================================
|
|
-void OSD_OpenStream(std::ofstream& theStream,
|
|
- const char* theName,
|
|
- const std::ios_base::openmode theMode)
|
|
+
|
|
+std::iostream* STREAM_WRAPPER::Open( const char* aFileName, std::ios_base::openmode aMode )
|
|
{
|
|
-#if defined(_WIN32) && !defined(__MINGW32__) && !defined(__MINGW64__)
|
|
- // file name is treated as UTF-8 string and converted to UTF-16 one
|
|
- const TCollection_ExtendedString aFileNameW (theName, Standard_True);
|
|
- theStream.open ((const wchar_t* )aFileNameW.ToExtString(), theMode);
|
|
-#else
|
|
- theStream.open (theName, theMode);
|
|
-#endif
|
|
+ if( NULL != m_stream )
|
|
+ {
|
|
+ delete m_stream;
|
|
+ m_stream = NULL;
|
|
+ }
|
|
+
|
|
+ if( NULL != m_buf )
|
|
+ {
|
|
+ m_buf->close();
|
|
+ delete m_buf;
|
|
+ }
|
|
+
|
|
+ int flags = 0;
|
|
+
|
|
+ if( aMode & std::ios_base::app )
|
|
+ flags |= _O_APPEND;
|
|
+
|
|
+ if( aMode & std::ios_base::out && aMode & std::ios_base::in )
|
|
+ flags |= _O_RDWR;
|
|
+ else if( aMode & std::ios_base::out )
|
|
+ flags |= _O_WRONLY;
|
|
+ else if( aMode & std::ios_base::in )
|
|
+ flags |= _O_RDONLY;
|
|
+
|
|
+ if( aMode & std::ios_base::binary )
|
|
+ flags |= _O_BINARY;
|
|
+
|
|
+ if( aMode & std::ios_base::out && aMode & std::ios_base::trunc
|
|
+ && !( aMode & std::ios_base::app ) && !( aMode & std::ios_base::ate ) )
|
|
+ flags |= _O_TRUNC;
|
|
+
|
|
+ if( aMode & std::ios_base::out )
|
|
+ flags |= _O_CREAT;
|
|
+
|
|
+ // convert from UTF8 to wchar_t
|
|
+ const TCollection_ExtendedString aFileNameW( aFileName, Standard_True);
|
|
+
|
|
+ int fd = _wopen( (const wchar_t* )aFileNameW.ToExtString(), flags, _S_IREAD | _S_IWRITE );
|
|
+
|
|
+ if( fd >= 0 && aMode & std::ios_base::ate )
|
|
+ lseek( fd, 0, SEEK_END );
|
|
+
|
|
+ m_buf = new __gnu_cxx::stdio_filebuf<char>( fd, aMode );
|
|
+
|
|
+ m_stream = new std::iostream( m_buf );
|
|
+
|
|
+ return m_stream;
|
|
}
|
|
|
|
-// ==============================================
|
|
-// function : OSD_OpenStream
|
|
-// purpose : Opens file stream
|
|
-// ==============================================
|
|
-void OSD_OpenStream(std::ofstream& theStream,
|
|
- const TCollection_ExtendedString& theName,
|
|
- const std::ios_base::openmode theMode)
|
|
+
|
|
+void STREAM_WRAPPER::Close( void )
|
|
{
|
|
-#if defined(_WIN32) && !defined(__MINGW32__) && !defined(__MINGW64__)
|
|
- theStream.open ((const wchar_t* )theName.ToExtString(), theMode);
|
|
-#else
|
|
- // conversion in UTF-8 for linux
|
|
- NCollection_Utf8String aString((const Standard_Utf16Char*)theName.ToExtString());
|
|
- theStream.open (aString.ToCString(),theMode);
|
|
-#endif
|
|
+ if( m_buf )
|
|
+ m_buf->close();
|
|
+
|
|
+ return;
|
|
+}
|
|
+
|
|
+
|
|
+void STREAM_WRAPPER::Init( void )
|
|
+{
|
|
+ if( m_stream )
|
|
+ {
|
|
+ delete m_stream;
|
|
+ m_stream = NULL;
|
|
+ }
|
|
+
|
|
+ if( m_buf )
|
|
+ {
|
|
+ m_buf->close();
|
|
+ delete m_buf;
|
|
+ m_buf = NULL;
|
|
+ }
|
|
+}
|
|
+
|
|
+
|
|
+std::iostream* STREAM_WRAPPER::GetStream( void )
|
|
+{
|
|
+ return m_stream;
|
|
}
|
|
|
|
+
|
|
+bool STREAM_WRAPPER::IsOpen( void )
|
|
+{
|
|
+ if( NULL == m_buf )
|
|
+ return false;
|
|
+
|
|
+ return m_buf->is_open();
|
|
+}
|
|
diff --git a/src/OSD/OSD_OpenFile.hxx b/src/OSD/OSD_OpenFile.hxx
|
|
index 5c4a70aaf..bc9c13339 100644
|
|
--- a/src/OSD/OSD_OpenFile.hxx
|
|
+++ b/src/OSD/OSD_OpenFile.hxx
|
|
@@ -23,39 +23,48 @@
|
|
|
|
#include <fstream>
|
|
#include <TCollection_ExtendedString.hxx>
|
|
+#include <ext/stdio_filebuf.h>
|
|
|
|
-//! Function opens the file stream.
|
|
-//! @param theStream stream to open
|
|
-//! @param theName name of file encoded in UTF-8
|
|
-//! @param theMode opening mode
|
|
-__Standard_API void OSD_OpenStream (std::ofstream& theStream,
|
|
- const char* theName,
|
|
- const std::ios_base::openmode theMode);
|
|
|
|
-//! Function opens the file stream.
|
|
-//! @param theStream stream to open
|
|
-//! @param theName name of file encoded in UTF-16
|
|
-//! @param theMode opening mode
|
|
-__Standard_API void OSD_OpenStream (std::ofstream& theStream,
|
|
- const TCollection_ExtendedString& theName,
|
|
- const std::ios_base::openmode theMode);
|
|
+#define OPEN_OSTREAM( var, name ) \
|
|
+ STREAM_WRAPPER var ## _BUF_; \
|
|
+ std::ostream& var = *var ## _BUF_.Open( name, std::ios_base::out | std::ios_base::trunc | std::ios_base::binary )
|
|
|
|
-//! Function opens the file buffer.
|
|
-//! @param theBuff file buffer to open
|
|
-//! @param theName name of file encoded in UTF-8
|
|
-//! @param theMode opening mode
|
|
-__Standard_API void OSD_OpenFileBuf (std::filebuf& theBuff,
|
|
- const char* theName,
|
|
- const std::ios_base::openmode theMode);
|
|
+#define OPEN_ISTREAM( var, name ) \
|
|
+ STREAM_WRAPPER var ## _BUF_; \
|
|
+ std::istream& var = *var ## _BUF_.Open( name, std::ios_base::in | std::ios_base::binary )
|
|
|
|
-//! Function opens the file buffer.
|
|
-//! @param theBuff file buffer to open
|
|
-//! @param theName name of file encoded in UTF-16
|
|
-//! @param theMode opening mode
|
|
-__Standard_API void OSD_OpenFileBuf (std::filebuf& theBuff,
|
|
- const TCollection_ExtendedString& theName,
|
|
- const std::ios_base::openmode theMode);
|
|
+#define OPEN_IOSTREAM( var, name ) \
|
|
+ STREAM_WRAPPER var ## _BUF_; \
|
|
+ std::iostream& var = *var ## _BUF_.Open( name, std::ios_base::out | std::ios_base::in | std::ios_base::binary )
|
|
+
|
|
+#define OPEN_STREAM( var, name, mode ) \
|
|
+ STREAM_WRAPPER var ## _BUF_; \
|
|
+ std::iostream& var = *var ## _BUF_.Open( name, mode )
|
|
+
|
|
+#define IS_OPEN( var ) var ## _BUF_.IsOpen()
|
|
+
|
|
+#define CLOSE_STREAM( var ) var ## _BUF_.Close()
|
|
+
|
|
+class STREAM_WRAPPER
|
|
+{
|
|
+private:
|
|
+ __gnu_cxx::stdio_filebuf<char>* m_buf;
|
|
+ std::iostream* m_stream;
|
|
+
|
|
+public:
|
|
+ STREAM_WRAPPER();
|
|
+ virtual ~STREAM_WRAPPER();
|
|
+
|
|
+ std::iostream* Open( const char* aFileName, std::ios_base::openmode aMode );
|
|
+ void Close( void );
|
|
+
|
|
+ std::iostream* GetStream( void );
|
|
+
|
|
+ bool IsOpen( void );
|
|
|
|
+ void Init( void );
|
|
+};
|
|
|
|
//! Function opens the file.
|
|
//! @param theName name of file encoded in UTF-16
|
|
diff --git a/src/StepSelect/StepSelect_WorkLibrary.cxx b/src/StepSelect/StepSelect_WorkLibrary.cxx
|
|
index 5ff57af96..e822cbef1 100644
|
|
--- a/src/StepSelect/StepSelect_WorkLibrary.cxx
|
|
+++ b/src/StepSelect/StepSelect_WorkLibrary.cxx
|
|
@@ -12,6 +12,7 @@
|
|
// commercial license or contractual agreement.
|
|
|
|
#include <StepSelect_WorkLibrary.ixx>
|
|
+#include <OSD_OpenFile.hxx>
|
|
|
|
#include <sys/stat.h>
|
|
#include <errno.h>
|
|
@@ -84,10 +85,11 @@ Standard_Boolean StepSelect_WorkLibrary::WriteFile
|
|
DeclareAndCast(StepData_Protocol,stepro,ctx.Protocol());
|
|
if (stepmodel.IsNull() || stepro.IsNull()) return Standard_False;
|
|
|
|
- ofstream fout;
|
|
- OSD_OpenStream(fout,ctx.FileName(),ios::out|ios::trunc);
|
|
+ OPEN_OSTREAM( fout, ctx.FileName() );
|
|
+ // XXX - ofstream fout;
|
|
+ // XXX - OSD_OpenStream(fout,ctx.FileName(),ios::out|ios::trunc);
|
|
|
|
- if (!fout || !fout.rdbuf()->is_open()) {
|
|
+ if (!IS_OPEN(fout)) {
|
|
ctx.CCheck(0)->AddFail("Step File could not be created");
|
|
sout<<" Step File could not be created : " << ctx.FileName() << endl; return 0;
|
|
}
|
|
@@ -118,7 +120,7 @@ Standard_Boolean StepSelect_WorkLibrary::WriteFile
|
|
sout<<" Done"<<endl;
|
|
|
|
errno = 0;
|
|
- fout.close();
|
|
+ CLOSE_STREAM( fout );
|
|
isGood = fout.good() && isGood && !errno;
|
|
if(errno)
|
|
sout << strerror(errno) << endl;
|
|
diff --git a/src/VrmlAPI/VrmlAPI_Writer.cxx b/src/VrmlAPI/VrmlAPI_Writer.cxx
|
|
index a31c9d203..615934de2 100644
|
|
--- a/src/VrmlAPI/VrmlAPI_Writer.cxx
|
|
+++ b/src/VrmlAPI/VrmlAPI_Writer.cxx
|
|
@@ -216,8 +216,7 @@ void VrmlAPI_Writer::Write(const TopoDS_Shape& aShape,const Standard_CString aFi
|
|
{
|
|
OSD_Path thePath(aFile);
|
|
TCollection_AsciiString theFile;thePath.SystemName(theFile);
|
|
- ofstream outfile;
|
|
- OSD_OpenStream(outfile, theFile.ToCString(), ios::out);
|
|
+ OPEN_OSTREAM( outfile, theFile.ToCString() );
|
|
Handle(VrmlConverter_IsoAspect) ia = new VrmlConverter_IsoAspect; // UIso
|
|
Handle(VrmlConverter_IsoAspect) ia1 = new VrmlConverter_IsoAspect; //VIso
|
|
ia->SetMaterial(myUisoMaterial);
|
|
@@ -315,6 +314,7 @@ void VrmlAPI_Writer::Write(const TopoDS_Shape& aShape,const Standard_CString aFi
|
|
Group2.Print(outfile);
|
|
}
|
|
S2.Print(outfile);
|
|
- S1.Print(outfile);
|
|
+ S1.Print(outfile);
|
|
+ CLOSE_STREAM( outfile );
|
|
}
|
|
|
|
--
|
|
2.11.0
|
|
|