0022484: UNICODE characters support
[occt.git] / src / FSD / FSD_File.cxx
index 6c93a9d..bf62a62 100644 (file)
@@ -72,6 +72,18 @@ Storage_Error FSD_File::Open(const TCollection_AsciiString& aName,const Storage_
   SetName(aName);
 
   if (OpenMode() == Storage_VSNone) {
+
+#ifdef _WIN32
+    TCollection_ExtendedString aWName(aName);
+    if (aMode == Storage_VSRead) {
+      myStream.open( (const wchar_t*) aWName.ToExtString(),ios::in); // ios::nocreate is not portable
+    }
+    else if (aMode == Storage_VSWrite) {
+      myStream.open( (const wchar_t*) aWName.ToExtString(),ios::out);
+    }
+    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
     }
@@ -80,6 +92,7 @@ Storage_Error FSD_File::Open(const TCollection_AsciiString& aName,const Storage_
     }
     else if (aMode == Storage_VSReadWrite) {
       myStream.open(aName.ToCString(),ios::in|ios::out);
+#endif
     }
     
     if (myStream.fail()) {