File: ADIOSUtilities.h

package info (click to toggle)
vtk7 7.1.1%2Bdfsg1-12
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 125,776 kB
  • sloc: cpp: 1,539,582; ansic: 106,521; python: 78,038; tcl: 47,013; xml: 8,142; yacc: 5,040; java: 4,439; perl: 3,132; lex: 1,926; sh: 1,500; makefile: 122; objc: 83
file content (149 lines) | stat: -rw-r--r-- 4,290 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
/*=========================================================================

  Program:   Visualization Toolkit
  Module:    ADIOSUtilities.h

  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
  All rights reserved.
  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.

     This software is distributed WITHOUT ANY WARRANTY; without even
     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
     PURPOSE.  See the above copyright notice for more information.

=========================================================================*/
#ifndef __ADIOSUtilities_h
#define __ADIOSUtilities_h

#include <stdint.h>

#include <cstddef>

#include <complex>
#include <stdexcept>
#include <string>

#include <adios_types.h>

namespace ADIOS
{

// Description:
// Retrieve and parse error messages generated by the ADIOS write system
class WriteError : public std::runtime_error
{
public:
  WriteError(const std::string& msg = "");
  virtual ~WriteError() throw() { }

  // Description:
  // Test error codes for expected values.  An exception is thrown with the
  // appropriate error message if detected
  template<typename T>
  static void TestEq(const T& expected, const T& actual,
    const std::string& msg = "")
  {
    if(actual != expected)
    {
      throw WriteError(msg);
    }
  }

  // Description:
  // Test error codes for unexpected values.  An exception is thrown with
  // The appropriate error message if detected.
  template<typename T>
  static void TestNe(const T& notExpected, const T& actual,
    const std::string& msg = "")
  {
    if(actual == notExpected)
    {
      throw WriteError(msg);
    }
  }
};

// Description:
// Retrieve and parse error messages generated by the ADIOS read system
class ReadError : public std::runtime_error
{
public:
  ReadError(const std::string& msg = "");
  virtual ~ReadError() throw() { }

  // Description:
  // Test error codes for expected values.  An exception is thrown with the
  // appropriate error message if detected
  template<typename T>
  static void TestEq(const T& expected, const T& actual,
    const std::string& msg = "")
  {
    if(actual != expected)
    {
      throw ReadError(msg);
    }
  }

  // Description:
  // Test error codes for unexpected values.  An exception is thrown with
  // The appropriate error message if detected.
  template<typename T>
  static void TestNe(const T& notExpected, const T& actual,
    const std::string& msg = "")
  {
    if(actual == notExpected)
    {
      throw ReadError(msg);
    }
  }
};

namespace Type
{

// Description:
// Given a size in bytes, return the ADIOS signed integral type
template<size_t S> ADIOS_DATATYPES SizeToInt();
template<> ADIOS_DATATYPES SizeToInt<1>();
template<> ADIOS_DATATYPES SizeToInt<2>();
template<> ADIOS_DATATYPES SizeToInt<4>();
template<> ADIOS_DATATYPES SizeToInt<8>();

// Description:
// Given a size in bytes, return the ADIOS unsigned integral type
template<size_t S> ADIOS_DATATYPES SizeToUInt();
template<> ADIOS_DATATYPES SizeToUInt<1>();
template<> ADIOS_DATATYPES SizeToUInt<2>();
template<> ADIOS_DATATYPES SizeToUInt<4>();
template<> ADIOS_DATATYPES SizeToUInt<8>();

// Description:
// Map C and C++ primitive datatypes into ADIOS datatypes
template<typename TN>
ADIOS_DATATYPES NativeToADIOS();
template<> ADIOS_DATATYPES NativeToADIOS<int8_t>();
template<> ADIOS_DATATYPES NativeToADIOS<int16_t>();
template<> ADIOS_DATATYPES NativeToADIOS<int32_t>();
template<> ADIOS_DATATYPES NativeToADIOS<int64_t>();
template<> ADIOS_DATATYPES NativeToADIOS<uint8_t>();
template<> ADIOS_DATATYPES NativeToADIOS<uint16_t>();
template<> ADIOS_DATATYPES NativeToADIOS<uint32_t>();
template<> ADIOS_DATATYPES NativeToADIOS<uint64_t>();
template<> ADIOS_DATATYPES NativeToADIOS<float>();
template<> ADIOS_DATATYPES NativeToADIOS<double>();
template<> ADIOS_DATATYPES NativeToADIOS<std::complex<float> >();
template<> ADIOS_DATATYPES NativeToADIOS<std::complex<double> >();
template<> ADIOS_DATATYPES NativeToADIOS<std::string>();

// Description:
// Map type sizes
size_t SizeOf(ADIOS_DATATYPES ta);

// Description:
// Is the specified type an integer
bool IsInt(ADIOS_DATATYPES ta);

} // End namespace Type
} // End namespace ADIOS
#endif
// VTK-HeaderTest-Exclude: ADIOSUtilities.h