#include "eutils.h"

#if (!defined(EHDF5_H)) && (defined(EUTILS_HAVE_HDF5))
#define EHDF5_H

#include "estr.h"
#include "earray_dec.h"
#include <hdf5/serial/hdf5.h>
//#include <hdf5/serial/hdf5_hl.h>

estr ehdf5Type(int h5t);

class ehdf5Object
{
 public:
  estr name;
};

class ehdf5Group
{
 public:
  hid_t _gid;
  ehdf5Group(const ehdf5Group& g);
  ehdf5Group(hid_t gid);
  void close();
  earray<ehdf5Object> ls();
};

class ehdf5
{
 public:
  hid_t _fid;
  bool open(const estr& fname);
  bool create(const estr& fname);
  void close();

  ehdf5Group openGroup(const estr& gname="/");
  void createdspace();
  void writedspace();
  bool createdset(const estr& dsname);
  void listObjects();

  ebasearray* readDataset(const estr& dname);
  void writeDataset(const estr& dname,const ebasearray& arr);
  ehdf5();
};


#endif

