Salome HOME
22308: EDF 2572 SMESH: Can't import a file with a non ascii character in the path
[modules/smesh.git] / src / SMESHUtils / SMESH_File.hxx
index 5232fec0f69a54e96610ff55267dc54e72520365..0e7ccca52097dd656c794777871d589f078f8356 100644 (file)
@@ -42,24 +42,30 @@ class SMESHUtils_EXPORT SMESH_File
 {
 public:
 
-  SMESH_File(const std::string& name, bool open=true);
+  SMESH_File(const std::string& name, bool openForReading=true);
 
   ~SMESH_File();
 
   std::string getName() const { return _name; }
 
-  bool open();
+  const std::string& error() const { return _error; }
 
   void close();
 
   bool remove();
 
-  int size() const;
+  long size();
+
+  bool exists();
+
+  bool isDirectory();
 
   // ------------------------
   // Access to file contents
   // ------------------------
 
+  bool open(); // for reading
+
   operator const char*() const { return _pos; }
 
   bool operator++() { return ++_pos < _end; }
@@ -68,6 +74,8 @@ public:
 
   bool eof() const { return _pos >= _end; }
 
+  const char* end() const { return _end; }
+
   const char* getPos() const { return _pos; }
 
   void setPos(const char* pos);
@@ -78,10 +86,31 @@ public:
 
   bool getInts(std::vector<int>& ids);
 
+  // ------------------------
+  // Writting a binary file
+  // ------------------------
+
+  bool openForWriting(); // binary writing only
+
+  template <typename T>
+    bool write( const T* values, size_t nbTValues )
+  {
+    return writeRaw((const void*) values, nbTValues * sizeof(T));
+  }
+
+  template <typename T>
+    bool write( const T& value )
+  {
+    return writeRaw((const void*) & value, sizeof(T));
+  }
+
+  bool writeRaw(const void* data, size_t size);
+
 private:
 
   std::string _name; //!< file name
   int         _size; //!< file size
+  std::string _error;
 #ifdef WIN32
   HANDLE      _file, _mapObj;
 #else