X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHDFPersist%2FHDFfile.cc;h=8d39a88b7217dfc7668fe9d893b4f54fc972fcc9;hb=13bcfc46055d1da4629579b437304a0016e75438;hp=7c7307ab97d79bf1b648c11fe04bc0dc29e39ea3;hpb=61d4fc88c862e718985aa6e9b1bf72f055553eee;p=modules%2Fkernel.git diff --git a/src/HDFPersist/HDFfile.cc b/src/HDFPersist/HDFfile.cc index 7c7307ab9..8d39a88b7 100644 --- a/src/HDFPersist/HDFfile.cc +++ b/src/HDFPersist/HDFfile.cc @@ -1,17 +1,54 @@ -using namespace std; -extern "C" -{ +// 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 +// +// 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 : HDFfile.cc +// Module : SALOME +// #include "hdfi.h" +#ifndef WIN32 #include +#else +#include +#define F_OK 0 +#define access _access +#endif #include -} -#include +#include #include "HDFfile.hxx" #include "HDFexception.hxx" +herr_t file_attr(hid_t loc_id, const char *attr_name, void *operator_data) +{ + *(char**)operator_data = new char[strlen(attr_name)+1]; + strcpy(*(char**)operator_data, attr_name); + return 1; +} + HDFfile::HDFfile(char *name) : HDFcontainerObject(name) -{} +{ + _attribute = NULL; +} void HDFfile::CreateOnDisk() { @@ -85,7 +122,7 @@ void HDFfile::InternalObjectIndentify(int rank, char *object_name) throw HDFexception("Can't identify an internal object"); } -int HDFfile::ExistInternalObject(char *object_name) +int HDFfile::ExistInternalObject(const char *object_name) { int n,i; int ret = 0; @@ -114,3 +151,18 @@ hdf_object_type HDFfile::InternalObjectType(char *object_name) return type; } + +int HDFfile::nAttributes() +{ + int nbAttrs = H5Aget_num_attrs(_id); + if(nbAttrs <= 0) nbAttrs = 0; + return nbAttrs; +} + +char* HDFfile::GetAttributeName(unsigned idx) +{ + int nbAttrs = nAttributes(); + if(nbAttrs == 0) return NULL; + H5Aiterate(_id, &idx, file_attr, &_attribute); + return _attribute; +}