h5cpp  0.6.0
A modern C++ wrapper for the HDF5 C library
driver.hpp
Go to the documentation of this file.
1 //
2 // (c) Copyright 2017 DESY,ESS
3 //
4 // This file is part of h5cpp.
5 //
6 // This library is free software; you can redistribute it and/or modify it
7 // under the terms of the GNU Lesser General Public License as published
8 // by the Free Software Foundation; either version 2.1 of the License, or
9 // (at your option) any later version.
10 //
11 // This library is distributed in the hope that it will be useful, but
12 // WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY
13 // or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
14 // License for more details.
15 //
16 // You should have received a copy of the GNU Lesser General Public License
17 // along with this library; if not, write to the
18 // Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor
19 // Boston, MA 02110-1301 USA
20 // ===========================================================================
21 //
22 // Author: Eugen Wintersberger <eugen.wintersberger@desy.de>
23 // Created on: Nov 6, 2017
24 //
25 #pragma once
26 #include <memory>
27 #include <h5cpp/core/windows.hpp>
28 
29 
30 //
31 // Forward declaration of property lists
32 //
33 namespace hdf5
34 {
35 namespace property
36 {
37 class FileAccessList;
38 } // namespace property
39 } // namespace hdf5
40 
41 namespace hdf5
42 {
43 namespace file
44 {
45 
49 enum class DriverID : unsigned
50 {
51  Posix = 1,
52  Direct = 2,
53  Memory = 3,
54  MPI = 4
55 };
56 
65 #ifdef __clang__
66 #pragma clang diagnostic push
67 #pragma clang diagnostic ignored "-Wweak-vtables"
68 #endif
70 {
71  public:
75  using UniquePointer = std::unique_ptr<Driver>;
76 
77  virtual ~Driver()
78  {}
79 
85  virtual void operator()(const hdf5::property::FileAccessList& fapl) const = 0;
86 
91  //1
92  virtual DriverID id() const noexcept = 0;
93 };
94 #ifdef __clang__
95 #pragma clang diagnostic pop
96 #endif
97 
98 } // namespace file
99 } // namespace hdf5
abstract class for file drivers
Definition: driver.hpp:70
std::unique_ptr< Driver > UniquePointer
unique pointer type
Definition: driver.hpp:75
virtual DriverID id() const noexcept=0
get driver ID
virtual void operator()(const hdf5::property::FileAccessList &fapl) const =0
set a driver
virtual ~Driver()
Definition: driver.hpp:77
file access property list
Definition: file_access.hpp:68
DriverID
enumeration to determine the file driver
Definition: driver.hpp:50
top-level namespace of the entire library
Definition: attribute.hpp:45
#define DLL_EXPORT
Definition: windows.hpp:29