OPeNDAP Hyrax Back End Server (BES)  Updated for version 3.8.3
HDF5_DMR.h
Go to the documentation of this file.
1 // This file is part of the hdf4 data handler for the OPeNDAP data server.
3 //
4 // Author: Kent Yang <myang6@hdfgroup.org>
5 // Copyright (c) 2010-2012 The HDF Group
6 // The idea is borrowed from HDF4 OPeNDAP handler that is implemented by
7 // James Gallagher<jgallagher@opendap.org>
8 
9 #ifndef HDF5_DMR_H_
10 #define HDF5_DMR_H_
11 
12 #include "config_hdf5.h"
13 
14 
15 #include "hdf5.h"
16 
17 
18 //#define USE_DAP4 1
19 //#undef USE_DAP4
20 #ifdef USE_DAP4
21 #include <DMR.h>
22 #include <InternalErr.h>
23 
24 using namespace libdap;
25 
41 class HDF5DMR : public libdap::DMR {
42 private:
43  hid_t fileid;
44 
45  void m_duplicate(const HDF5DMR &src)
46  {
47  fileid = src.fileid;
48  }
49 
50 public:
51  HDF5DMR(libdap::DMR *dmr) : libdap::DMR(*dmr), fileid(-1) {}
52  HDF5DMR(libdap::D4BaseTypeFactory *factory,const string &name):libdap::DMR(factory,name),fileid(-1) {}
53 
54  HDF5DMR(const HDF5DMR &rhs) : libdap::DMR(rhs) {
55  m_duplicate(rhs);
56  }
57 
58  HDF5DMR & operator= (const HDF5DMR &rhs) {
59  if (this == &rhs)
60  return *this;
61 
62  dynamic_cast<libdap::DMR &>(*this) = rhs;
63  m_duplicate(rhs);
64 
65  return *this;
66  }
67 
68  ~HDF5DMR() {
69 
70  if (fileid != -1)
71  H5Fclose(fileid);
72 
73  }
74 
75  void setHDF5Dataset(const hid_t fileid_in) {
76  fileid = fileid_in;
77  }
78 
79 };
80 
81 #endif
82 #endif
83 
84 
85 
static class NCMLUtil overview