X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHDFPersist%2FHDFgroup.cc;h=f8ffa2df3ee1545cc1b944c7cdc668e3bd299cec;hb=441abe62d68a6c97159d4271d05eeef1b4106fbb;hp=9acf628368ee0d9f90400d7df512bfb312128987;hpb=61d4fc88c862e718985aa6e9b1bf72f055553eee;p=modules%2Fkernel.git diff --git a/src/HDFPersist/HDFgroup.cc b/src/HDFPersist/HDFgroup.cc index 9acf62836..f8ffa2df3 100644 --- a/src/HDFPersist/HDFgroup.cc +++ b/src/HDFPersist/HDFgroup.cc @@ -1,4 +1,29 @@ -using namespace std; +// Copyright (C) 2007-2010 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 : HDFgroup.cc +// Module : SALOME +// extern "C" { #include "hdfi.h" @@ -7,18 +32,26 @@ extern "C" #include "HDFgroup.hxx" #include "HDFexception.hxx" -HDFgroup::HDFgroup(char *name, HDFcontainerObject *father) +herr_t group_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; +} + +HDFgroup::HDFgroup(const char *name, HDFcontainerObject *father) : HDFcontainerObject(name) { _father = father; _fid = _father->GetId(); _father->AddSon(this); _mid = -1; + _attribute = NULL; }; void HDFgroup::CreateOnDisk() { - if ((_id = HDFgroupCreate(_fid,_name)) < 0) + if ((_id = HDFgroupCreate(_fid,_name)) < 0) throw HDFexception("Can't create group"); } @@ -66,7 +99,7 @@ void HDFgroup::InternalObjectIndentify(int rank, char *object_name) throw HDFexception("Can't identify an internal object"); } -int HDFgroup::ExistInternalObject(char *object_name) +int HDFgroup::ExistInternalObject(const char *object_name) { int n,i; int ret = 0; @@ -122,3 +155,21 @@ void HDFgroup::FileUnMount() _mid = -1; } + +int HDFgroup::nAttributes() +{ + int nbAttrs = H5Aget_num_attrs(_id); + if(nbAttrs <= 0) nbAttrs = 0; + return nbAttrs; +} + +char* HDFgroup::GetAttributeName(unsigned idx) +{ + int nbAttrs = nAttributes(); + if(nbAttrs == 0) return NULL; + H5Aiterate(_id, &idx, group_attr, &_attribute); + return _attribute; +} + + +