radarlib  1.4.6
odimh5v21_hdf5.hpp
Go to the documentation of this file.
1 /*
2  * Radar Library
3  *
4  * Copyright (C) 2009-2010 ARPA-SIM <urpsim@smr.arpa.emr.it>
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License along
17  * with this program; if not, write to the Free Software Foundation, Inc.,
18  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19  *
20  * Author: Guido Billi <guidobilli@gmail.com>
21  */
22 
27 #ifndef __RADAR_ODIMH5V21_HDF5_HPP__
28 #define __RADAR_ODIMH5V21_HDF5_HPP__
29 
30 /*===========================================================================*/
31 /* INTERNAL HEADER FILE USED INSIDE THE LIBRARY */
32 /*===========================================================================*/
33 
34 #include <radarlib/defs.h>
35 
36 /* sotto windows bisogna utilizzare queste macro per poter usare la DLL */
37 #ifndef _HDF5USEDLL_
38 #define _HDF5USEDLL_
39 #endif
40 #ifndef HDF5CPP_USEDLL
41 #define HDF5CPP_USEDLL
42 #endif
43 
44 #include "H5Cpp.h"
45 //#ifndef H5_NO_NAMESPACE
46 //using namespace H5;
47 //#endif
48 
49 #include <set>
50 
51 namespace OdimH5v21 {
52 
53 /*===========================================================================*/
54 /* HDF5 FILE */
55 /*===========================================================================*/
56 
62 class RADAR_API HDF5File
63 {
64 public:
73  static H5::H5File* open (const std::string& path, int h5flags);
80  static H5::Group* getRoot (H5::H5File* file);
81 };
82 
83 /*===========================================================================*/
84 /* HDF5 ATTRIBUTE */
85 /*===========================================================================*/
86 
92 class RADAR_API HDF5Attribute
93 {
94 public:
105  static H5::Attribute* get (H5::H5Object* obj, const char* name, bool mandatory);
114  static bool exists (H5::H5Object* obj, const char* name);
123  static void remove (H5::H5Object* obj, const char* name);
132  static std::string getName (H5::Attribute* attr);
133 
145  static void set (H5::H5Object* obj, const char* name, int64_t value);
157  static void set (H5::H5Object* obj, const char* name, double value);
169  static void set (H5::H5Object* obj, const char* name, const char* value);
181  static void set (H5::H5Object* obj, const char* name, const std::string& value);
182 
192  static int64_t getLong (H5::H5Object* obj, const char* name);
202  static int64_t getLong (H5::H5Object* obj, const char* name, int64_t defaultValue);
212  static double getDouble (H5::H5Object* obj, const char* name);
223  static double getDouble (H5::H5Object* obj, const char* name, double defaultValue);
233  static std::string getStr (H5::H5Object* obj, const char* name);
244  static std::string getStr (H5::H5Object* obj, const char* name, const std::string& defaultValue);
245 
246 };
247 
248 /*===========================================================================*/
249 /* HDF5 GROUP */
250 /*===========================================================================*/
251 
257 class RADAR_API HDF5Group
258 {
259 public:
268  static int getChildCount (H5::Group* parent, const char* prefix);
278  static H5::Group* getChild (H5::Group* parent, const char* name);
287  static void ensureChild (H5::Group* parent, const char* name);
297  static H5::Group* ensureGetChild (H5::Group* parent, const char* name);
306  static void removeChild (H5::Group* parent, const char* name);
307 
316  static bool exists (H5::Group* parent, const char* name);
325  static H5::DataSet* getDataset (H5::Group* parent, const char* name);
334  static void copyAttributes (H5::Group* src, H5::Group* dst);
344  static void copyAttributes (H5::Group* src, H5::Group* dst, const std::set<std::string>& names);
353 // static void copyDatasets(H5::Group* src, H5::Group* dst);
354 // static void copyDatasets(MetadataGroup* src, MetadataGroup* dst);
364 // static void copyDatasets(H5::Group* src, H5::Group* dst, const std::set<std::string>& names);
365 };
366 
367 /*===========================================================================*/
368 /* HDF5 ATOM TYPE */
369 /*===========================================================================*/
370 
376 class RADAR_API HDF5AtomType
377 {
378 public:
388  static H5::AtomType fromDataType(const H5::DataType& type);
389 };
390 
391 
392 /*===========================================================================*/
393 
394 }
395 
396 #endif
397 
398 
399 
400 
401 
402 
403 
404 
405 
406 
407 
408 
409 
410 
411 
412 
413 
414 
415 
416 
417 
418 
419 
420 
421 
422 
423 
424 
425 
426 
427 
428 
429 
430 
431 
HDF5Group class.
Definition: odimh5v21_hdf5.hpp:377
HDF5Attribute class.
Definition: odimh5v21_hdf5.hpp:93
HDF5File class.
Definition: odimh5v21_hdf5.hpp:63
HDF5Group class.
Definition: odimh5v21_hdf5.hpp:258
Internal library macros.
Namespace related to ODIMH5 version 2.1.
Definition: odimh5v21.hpp:46