libpniio
field_factory.hpp
Go to the documentation of this file.
1 //
2 // (c) Copyright 2014 DESY, Eugen Wintersberger <eugen.wintersberger@desy.de>
3 //
4 // This file is part of libpniio.
5 //
6 // libpniio is free software: you can redistribute it and/or modify
7 // it under the terms of the GNU General Public License as published by
8 // the Free Software Foundation, either version 2 of the License, or
9 // (at your option) any later version.
10 //
11 // libpniio is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
15 //
16 // You should have received a copy of the GNU General Public License
17 // along with libpniio. If not, see <http://www.gnu.org/licenses/>.
18 // ===========================================================================
19 //
20 // Created on: Jul 17, 2014
21 // Author: Eugen Wintersberger <eugen.wintersberger@desy.de>
22 //
23 #pragma once
24 
25 extern "C"{
26 #include <hdf5.h>
27 }
28 
30 #include <pni/core/types.hpp>
31 #include <vector>
32 #include "type_imp.hpp"
33 
34 namespace pni{
35 namespace io{
36 namespace nx{
37 namespace h5{
38 
39  //forward declaration of filter
40  class object_imp;
41  class h5dataspace;
42  class group_imp;
43  class field_imp;
44  class h5datatype;
45 
66  {
67  private:
68 
69  //----------------------------------------------------------------
85  static field_imp create(const object_imp &parent,
86  const pni::core::string &name,
87  const object_imp &create_plist,
88  const h5datatype &type,
89  const h5dataspace &space);
90 
91 
92  //----------------------------------------------------------------
100  static object_imp create_cplist();
101 
102  //----------------------------------------------------------------
112  static object_imp
114 
115  //----------------------------------------------------------------
127  static h5dataspace
129 
130  public:
131 
132  //----------------------------------------------------------------
151  static field_imp create(const group_imp &parent,
152  const pni::core::string &name,
153  pni::core::type_id_t tid,
154  const type_imp::index_vector_type &shape,
155  const type_imp::index_vector_type &chunk,
156  const h5filter &filter);
157 
158  };
159 
160 //end of namespace
161 }
162 }
163 }
164 }
dataspace object
Definition: h5dataspace.hpp:68
static h5dataspace create_dataspace(const type_imp::index_vector_type &shape)
create dataspace
Definition: field_factory.cpp:88
dataset object
Definition: field_imp.hpp:51
HDF5 group object.
Definition: group_imp.hpp:47
HDF5 type wrapper.
Definition: h5datatype.hpp:43
Definition: cbf_reader.hpp:41
static field_imp create(const object_imp &parent, const pni::core::string &name, const object_imp &create_plist, const h5datatype &type, const h5dataspace &space)
create field without filter
Definition: field_factory.cpp:39
basic HDF5 ID wrapper
Definition: object_imp.hpp:59
factory for field construction
Definition: field_factory.hpp:65
base class for filter implementations
Definition: h5filter.hpp:48
static object_imp create_cplist()
create a default creation property list
Definition: field_factory.cpp:55
std::vector< index_type > index_vector_type
container type for counters
Definition: type_imp.hpp:52