ADIOSUtilities.h 4.25 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14
/*=========================================================================

  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.

=========================================================================*/
15 16
#ifndef __ADIOSUtilities_h
#define __ADIOSUtilities_h
17
#ifndef __VTK_WRAP__
18
#ifndef VTK_WRAPPING_CXX
19 20 21

#include <stdint.h>

22
#include <cstddef>
23

24 25 26 27 28
#include <complex>
#include <stdexcept>
#include <string>

#include <adios_types.h>
29

30
namespace ADIOS
31 32
{

33 34 35 36
// Description:
// Retrieve and parse error messages generated by the ADIOS write system
class WriteError : public std::runtime_error
{
37
public:
38 39
  WriteError(const std::string& msg = "");
  virtual ~WriteError() throw() { }
40 41

  // Description:
42 43
  // Test error codes for expected values.  An exception is thrown with the
  // appropriate error message if detected
44
  template<typename T>
45 46
  static void TestEq(const T& expected, const T& actual,
    const std::string& msg = "")
47
  {
48
    if(actual != expected)
49
    {
50
      throw WriteError(msg);
51
    }
52 53
  }

54 55 56
  // Description:
  // Test error codes for unexpected values.  An exception is thrown with
  // The appropriate error message if detected.
57
  template<typename T>
58 59
  static void TestNe(const T& notExpected, const T& actual,
    const std::string& msg = "")
60
  {
61
    if(actual == notExpected)
62
    {
63
      throw WriteError(msg);
64
    }
65
  }
66
};
67

68 69 70 71 72 73 74 75 76 77 78
// 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
79
  template<typename T>
80 81
  static void TestEq(const T& expected, const T& actual,
    const std::string& msg = "")
82
  {
83
    if(actual != expected)
84
    {
85
      throw ReadError(msg);
86
    }
87 88
  }

89 90 91
  // Description:
  // Test error codes for unexpected values.  An exception is thrown with
  // The appropriate error message if detected.
92
  template<typename T>
93 94
  static void TestNe(const T& notExpected, const T& actual,
    const std::string& msg = "")
95
  {
96
    if(actual == notExpected)
97
    {
98
      throw ReadError(msg);
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

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
150
#endif
151
#endif
152
#endif
153
// VTK-HeaderTest-Exclude: ADIOSUtilities.h