bes Updated for version 3.21.1
The Backend Server (BES) is the lower two tiers of the Hyrax data server
HDF5Structure.h
Go to the documentation of this file.
1// This file is part of hdf5_handler a HDF5 file handler for the OPeNDAP
2// data server.
3
4// Author: Hyo-Kyung Lee <hyoklee@hdfgroup.org> and Kent Yang
5// <myang6@hdfgroup.org>
6
7// Copyright (c) 2009-2023 The HDF Group, Inc. and OPeNDAP, Inc.
8//
9// This is free software; you can redistribute it and/or modify it under the
10// terms of the GNU Lesser General Public License as published by the Free
11// Software Foundation; either version 2.1 of the License, or (at your
12// option) any later version.
13//
14// This software is distributed in the hope that it will be useful, but
15// WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
17// License for more details.
18//
19// You should have received a copy of the GNU Lesser General Public
20// License along with this library; if not, write to the Free Software
21// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22//
23// You can contact OPeNDAP, Inc. at PO Box 112, Saunderstown, RI. 02874-0112.
24// You can contact The HDF Group, Inc. at 410 E University Ave,
25// Suite 200, Champaign, IL 61820
26
27#ifndef _HDF5Structure_h
28#define _HDF5Structure_h
29
30#include <string>
31#include <H5Ipublic.h>
32#include <libdap/Structure.h>
33#include "HDF5Array.h"
34#include "h5get.h"
35
36
43class HDF5Structure:public libdap::Structure {
44 private:
45
46 std::string var_path;
47
48 void m_duplicate(const HDF5Structure & src) {
49 var_path = src.var_path;
50 }
51
52 void do_structure_read(hid_t dsetid, hid_t dtypeid,std::vector <char> &values,bool has_values, size_t values_offset);
53 void do_structure_read_atomic( hid_t memb_id, char *memb_name, H5T_class_t memb_cls,
54 const std::vector<char> &values, size_t values_offset, size_t memb_offset);
55 void do_structure_read_string(hid_t memb_id, char *memb_name, const std::vector<char> &values,
56 size_t values_offset, size_t memb_offset);
57 void catch_free(char *memb_name, hid_t memb_id, hid_t memtype, hid_t mspace, std::vector<char>&values) const;
58 friend class HDF5Array;
59 public:
60
62 HDF5Structure(const std::string &n, const std::string &vpath, const std::string &d);
63 HDF5Structure(const HDF5Structure &rhs);
64 ~ HDF5Structure() override = default;
65
68
73 libdap::BaseType *ptr_duplicate() override;
74
76 bool read() override;
77
78
79};
80
81#endif
A class for handling all types of array in HDF5 for the default option.
HDF5Structure(const std::string &n, const std::string &vpath, const std::string &d)
Constructor.
HDF5Structure & operator=(const HDF5Structure &rhs)
Assignment operator for dynamic cast into generic Structure.
libdap::BaseType * ptr_duplicate() override
bool read() override
Reads HDF5 structure data by calling each member's read method in this structure.