AXOM
Axom provides a robust, flexible software infrastructure for the development of multi-physics applications and computational tools.
NodeArrayView.hpp File Reference
#include "axom/bump/utilities/conduit_array_view.hpp"
#include "axom/slic/interface/slic.hpp"
#include <conduit/conduit.hpp>
#include <type_traits>
#include <utility>

Macros

#define AXOM_BUMP_NODE_ARRAY_VIEW_TYPES(MACRO)
 
#define AXOM_BUMP_DECLARE_NODE_TYPE_TRAITS(CppType, DTypeID, IsMethod, PtrMethod, Label)
 
#define AXOM_BUMP_DISPATCH_SINGLE(CppType, DTypeID, IsMethod, PtrMethod, Label)
 
#define AXOM_BUMP_DISPATCH_SAME(CppType, DTypeID, IsMethod, PtrMethod, Label)
 

Macro Definition Documentation

◆ AXOM_BUMP_NODE_ARRAY_VIEW_TYPES

#define AXOM_BUMP_NODE_ARRAY_VIEW_TYPES (   MACRO)
Value:
MACRO(conduit::int8, INT8_ID, is_int8, as_int8_ptr, "int8") \
MACRO(conduit::int16, INT16_ID, is_int16, as_int16_ptr, "int16") \
MACRO(conduit::int32, INT32_ID, is_int32, as_int32_ptr, "int32") \
MACRO(conduit::int64, INT64_ID, is_int64, as_int64_ptr, "int64") \
MACRO(conduit::uint8, UINT8_ID, is_uint8, as_uint8_ptr, "uint8") \
MACRO(conduit::uint16, UINT16_ID, is_uint16, as_uint16_ptr, "uint16") \
MACRO(conduit::uint32, UINT32_ID, is_uint32, as_uint32_ptr, "uint32") \
MACRO(conduit::uint64, UINT64_ID, is_uint64, as_uint64_ptr, "uint64") \
MACRO(conduit::float32, FLOAT32_ID, is_float32, as_float32_ptr, "float32") \
MACRO(conduit::float64, FLOAT64_ID, is_float64, as_float64_ptr, "float64")
@ INT32_ID
Definition: SidreTypes.hpp:101
@ INT64_ID
Definition: SidreTypes.hpp:102
@ INT16_ID
Definition: SidreTypes.hpp:100
@ UINT64_ID
Definition: SidreTypes.hpp:107
@ UINT16_ID
Definition: SidreTypes.hpp:105
@ INT8_ID
Definition: SidreTypes.hpp:99
@ FLOAT32_ID
Definition: SidreTypes.hpp:109
@ UINT8_ID
Definition: SidreTypes.hpp:104
@ FLOAT64_ID
Definition: SidreTypes.hpp:110
@ UINT32_ID
Definition: SidreTypes.hpp:106
float float32
Definition: Types.hpp:28
double float64
Definition: Types.hpp:29

◆ AXOM_BUMP_DECLARE_NODE_TYPE_TRAITS

#define AXOM_BUMP_DECLARE_NODE_TYPE_TRAITS (   CppType,
  DTypeID,
  IsMethod,
  PtrMethod,
  Label 
)
Value:
template <> \
struct NodeTypeTraits<CppType> \
{ \
static bool matches(const conduit::Node &n) { return n.dtype().IsMethod(); } \
static CppType *data(conduit::Node &n) { return n.PtrMethod(); } \
static CppType *data(const conduit::Node &n) { return const_cast<CppType *>(n.PtrMethod()); } \
static const char *label() { return Label; } \
static int dtypeId() { return conduit::DataType::DTypeID; } \
};
conduit::Node Node
The Node class is the primary object in Conduit.
Definition: SidreTypes.hpp:34

◆ AXOM_BUMP_DISPATCH_SINGLE

#define AXOM_BUMP_DISPATCH_SINGLE (   CppType,
  DTypeID,
  IsMethod,
  PtrMethod,
  Label 
)
Value:
if(NodeTypeTraits<CppType>::matches(n)) \
{ \
invoke_single_array_view<type_selected(Types, conduit::DataType::DTypeID), CppType>( \
n, \
std::forward<FuncType>(func)); \
} \
else

◆ AXOM_BUMP_DISPATCH_SAME

#define AXOM_BUMP_DISPATCH_SAME (   CppType,
  DTypeID,
  IsMethod,
  PtrMethod,
  Label 
)
Value:
if(NodeTypeTraits<CppType>::matches(first)) \
{ \
invoke_same_array_views<type_selected(Types, conduit::DataType::DTypeID), CppType>( \
std::forward<FuncType>(func), \
std::forward<NodeTypes>(nodes)...); \
} \
else