IODA Bundle
HH-types.h
Go to the documentation of this file.
1 #pragma once
2 /*
3  * (C) Copyright 2017-2020 Ryan Honeyager (ryan@honeyager.info)
4  * (C) Copyright 2020-2021 UCAR
5  *
6  * This software is licensed under the terms of the Apache Licence Version 2.0
7  * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
8  */
9 /*! \addtogroup ioda_internals_engines_hh
10  *
11  * @{
12  * \file HH-types.h
13  * \brief HDF5 engine implementation of ioda::detail::Type_Provider.
14  */
15 #include "./Handles.h"
16 #include "ioda/Types/Type.h"
18 #include "ioda/defs.h"
19 
20 namespace ioda {
21 namespace detail {
22 namespace Engines {
23 namespace HH {
24 
25 /// \brief This is the implementation of Type_Provider using HDF5. Do not use outside of IODA.
26 /// \ingroup ioda_internals_engines_hh
28 public:
29  virtual ~HH_Type_Provider();
30  static HH_hid_t getFundamentalHHType(std::type_index type);
31  Type makeFundamentalType(std::type_index type) const final;
32  Type makeArrayType(std::initializer_list<Dimensions_t> dimensions, std::type_index typeOuter,
33  std::type_index typeInner) const final;
34  Type makeStringType(size_t string_length, std::type_index typeOuter) const final;
35  static HH_Type_Provider* instance();
36 };
37 
38 /// \brief This is the implementation of ioda::Type using HDF5. Do not use outside of IODA.
39 /// \ingroup ioda_internals_engines_hh
41 public:
42  virtual ~HH_Type();
44  HH_Type(HH_hid_t h);
45  size_t getSize() const final;
46 };
47 } // namespace HH
48 } // namespace Engines
49 } // namespace detail
50 } // namespace ioda
51 
52 /// @}
HDF5 resource handles in C++.
Interfaces for ioda::Type and related classes.
Frontend/backend bindings for the type system.
Represents the "type" (i.e. integer, string, float) of a piece of data.
Definition: Type.h:123
This is the implementation of Type_Provider using HDF5. Do not use outside of IODA.
Definition: HH-types.h:27
This is the implementation of ioda::Type using HDF5. Do not use outside of IODA.
Definition: HH-types.h:40
A class to wrap HDF5's hid_t resource handles.
Definition: Handles.h:92
Backends implement type providers in conjunction with Attributes, Has_Attributes, Variables and Has_V...
Definition: Type_Provider.h:36
Common preprocessor definitions used throughout IODA.
#define IODA_DL
A preprocessor tag that indicates that a symbol is to be exported/imported.
Definition: defs.h:110