23 #include "openPMD/Dataset.hpp" 24 #include "openPMD/Datatype.hpp" 35 std::unique_ptr< void, std::function< void(void*) > >
36 allocatePtr(
Datatype dtype, Extent
const& e);
38 std::unique_ptr< void, std::function< void(void*) > >
39 allocatePtr(
Datatype dtype, uint64_t numPoints);
41 inline std::unique_ptr< void, std::function< void(void*) > >
42 allocatePtr(
Datatype dtype, Extent
const& e)
44 uint64_t numPoints = 1u;
45 for(
auto const& dimensionSize : e )
46 numPoints *= dimensionSize;
47 return allocatePtr(dtype, numPoints);
50 inline std::unique_ptr< void, std::function< void(void*) > >
51 allocatePtr(
Datatype dtype, uint64_t numPoints)
54 std::function< void(void*) > del = [](
void*){};
59 data =
new char*[numPoints];
60 del = [](
void* p){
delete[]
static_cast< char**
>(p); };
62 case DT::VEC_LONG_DOUBLE:
64 data =
new long double[numPoints];
65 del = [](
void* p){
delete[]
static_cast< long double*
>(p); };
70 data =
new double[numPoints];
71 del = [](
void* p){
delete[]
static_cast< double*
>(p); };
75 data =
new float[numPoints];
76 del = [](
void* p){
delete[]
static_cast< float*
>(p); };
80 data =
new short[numPoints];
81 del = [](
void* p){
delete[]
static_cast< short*
>(p); };
85 data =
new int[numPoints];
86 del = [](
void* p){
delete[]
static_cast< int*
>(p); };
90 data =
new long[numPoints];
91 del = [](
void* p){
delete[]
static_cast< long*
>(p); };
93 case DT::VEC_LONGLONG:
95 data =
new long long[numPoints];
96 del = [](
void* p){
delete[]
static_cast< long long*
>(p); };
100 data =
new unsigned short[numPoints];
101 del = [](
void* p){
delete[]
static_cast< unsigned short*
>(p); };
105 data =
new unsigned int[numPoints];
106 del = [](
void* p){
delete[]
static_cast< unsigned int*
>(p); };
110 data =
new unsigned long[numPoints];
111 del = [](
void* p){
delete[]
static_cast< unsigned long*
>(p); };
113 case DT::VEC_ULONGLONG:
115 data =
new unsigned long long[numPoints];
116 del = [](
void* p){
delete[]
static_cast< unsigned long long*
>(p); };
120 data =
new char[numPoints];
121 del = [](
void* p){
delete[]
static_cast< char*
>(p); };
125 data =
new unsigned char[numPoints];
126 del = [](
void* p){
delete[]
static_cast< unsigned char*
>(p); };
129 data =
new bool[numPoints];
130 del = [](
void* p){
delete[]
static_cast< bool*
>(p); };
137 throw std::runtime_error(
"Unknown Attribute datatype (Pointer allocation)");
140 return std::unique_ptr< void, std::function< void(void*) > >(data, del);
Datatype
Concrete datatype of an object available at runtime.
Definition: Datatype.hpp:38
Public definitions of openPMD-api.
Definition: Date.cpp:28