X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHDFPersist%2FHDFconvert.cc;h=60c3ebb0af171e10dfd08fe13ab08e7fba76a972;hb=9b4e3fb7a66f98e695393fc5a522a95e275fd8be;hp=2a6fe9b760a19a62fc65ef8ce57dd7d8cd2fb9ef;hpb=102608ce8b69dd1ea798169e30223b67742ec26d;p=modules%2Fkernel.git diff --git a/src/HDFPersist/HDFconvert.cc b/src/HDFPersist/HDFconvert.cc index 2a6fe9b76..60c3ebb0a 100644 --- a/src/HDFPersist/HDFconvert.cc +++ b/src/HDFPersist/HDFconvert.cc @@ -1,33 +1,39 @@ -// SALOME HDFPersist : implementation of HDF persitent ( save/ restore ) +// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE +// +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS // -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. // +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. // +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +// SALOME HDFPersist : implementation of HDF persitent ( save/ restore ) // File : HDFconvert.cc // Module : SALOME - -using namespace std; +// #include "HDFconvert.hxx" -int HDFConvert::FromAscii(const string& file, const HDFcontainerObject & hdf_container, const string& nomdataset) +#ifdef WIN32 +#include +#include +#define open _open +#define close _close +#endif + +int HDFConvert::FromAscii(const std::string& file, const HDFcontainerObject & hdf_container, const std::string& nomdataset) { HDFdataset * hdf_dataset; @@ -43,7 +49,7 @@ int HDFConvert::FromAscii(const string& file, const HDFcontainerObject & hdf_con return -1; }; - // Lit l'état du fichier + // Lit l'‰tat du fichier if ( fstat(fd,&status) < 0) { perror("HDFConvert::FromAscii"); return -1; @@ -54,12 +60,25 @@ int HDFConvert::FromAscii(const string& file, const HDFcontainerObject & hdf_con #ifdef _POSIX_MAPPED_FILES - // Map le fichier en mémoire + // Map le fichier en m‰moire if ( (buffer = (char *) mmap(0,length,PROT_READ,MAP_SHARED,fd,0)) == MAP_FAILED ) { perror("HDFConvert::FromAscii"); return -1; }; - +#elif defined WIN32 + +#define SHMEMSIZE 4096 + + HANDLE hMapObject = CreateFileMapping( + INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, SHMEMSIZE, ""); + if (hMapObject != NULL) { + // Get a pointer to the file-mapped shared memory. + buffer = ( char* ) MapViewOfFile( + hMapObject, FILE_MAP_WRITE, 0, 0, 0 ); + if( buffer == NULL ) + CloseHandle(hMapObject); + }; + #else // Sort de la compilation @@ -68,8 +87,8 @@ int HDFConvert::FromAscii(const string& file, const HDFcontainerObject & hdf_con #endif // Creation du Dataset utilisateur - hdf_dataset = new HDFdataset::HDFdataset( (char *) nomdataset.c_str(), /*discard const */ - (HDFcontainerObject*) &hdf_container, /*discard const, pas de constructeur par référence */ + hdf_dataset = new HDFdataset( (char *) nomdataset.c_str(), /*discard const */ + (HDFcontainerObject*) &hdf_container, /*discard const, pas de constructeur par r‰f‰rence */ HDF_STRING, &length_long,1); // Cree le Dataset sur le disk @@ -99,4 +118,6 @@ int HDFConvert::FromAscii(const string& file, const HDFcontainerObject & hdf_con return -1; }; + + return length; };