189 lines
4.2 KiB
C++
189 lines
4.2 KiB
C++
// -*- C++ -*-
|
|
|
|
#ifndef __base_def_h__
|
|
#define __base_def_h__
|
|
|
|
#include <cassert>
|
|
|
|
#define DEBUG_MODE_X
|
|
|
|
#ifdef DEBUG_MODE_X
|
|
|
|
#include <iostream>
|
|
#define CHECK std::cout << __FILE__ << ": @" << __LINE__ << " in " << __func__ << std::endl;
|
|
#define VCHECK(a) std::cout << __FILE__ << ": @" << __LINE__ \
|
|
<< " in " << __func__ << ": " << #a << " = " << a << std::endl;
|
|
|
|
#else
|
|
#define CHECK
|
|
#define VCHECK(a)
|
|
|
|
#endif
|
|
|
|
#define DEFAULT_MEMBERS(__class_name__) __class_name__() = default; \
|
|
__class_name__(const __class_name__& in) = default; \
|
|
__class_name__& operator=(const __class_name__& in) = default; \
|
|
__class_name__(__class_name__&& in) = default; \
|
|
__class_name__& operator=(__class_name__&& in) = default
|
|
|
|
#define DEFAULT_MEMBERS_X(__class_name__) __class_name__(const __class_name__& in) = default; \
|
|
__class_name__& operator=(const __class_name__& in) = default; \
|
|
__class_name__(__class_name__&& in) = default; \
|
|
__class_name__& operator=(__class_name__&& in) = default
|
|
|
|
|
|
namespace MultiArrayTools
|
|
{
|
|
template <class MultiArray>
|
|
void checkPtr(const MultiArray& in, bool check = false)
|
|
{
|
|
static MultiArray const* ptr = nullptr;
|
|
if(not check){
|
|
ptr = ∈
|
|
}
|
|
else {
|
|
assert(ptr == &in);
|
|
}
|
|
}
|
|
|
|
/***********************
|
|
* Provided Types *
|
|
***********************/
|
|
|
|
// range_base.h
|
|
enum class RangeType;
|
|
|
|
// range_base.h
|
|
class RangeFactoryBase;
|
|
|
|
// range_base.h
|
|
class RangeBase;
|
|
|
|
// range_base.h
|
|
template <class Index>
|
|
class RangeInterface;
|
|
|
|
// index_base.h
|
|
class IndexBase;
|
|
|
|
// index_base.h
|
|
template <typename MetaType>
|
|
class IndexInterface;
|
|
|
|
// single_range.h
|
|
template <typename U, RangeType TYPE>
|
|
class SingleRange;
|
|
|
|
// single_range.h
|
|
template <typename U, RangeType TYPE>
|
|
class SingleRangeFactory;
|
|
|
|
// single_range.h
|
|
template <typename U, RangeType TYPE>
|
|
class SingleIndex;
|
|
|
|
// multi_range.h
|
|
template <class... Ranges>
|
|
class MultiRangeFactory;
|
|
|
|
// multi_range.h
|
|
template <class... Ranges>
|
|
class MultiRange;
|
|
|
|
// multi_range.h
|
|
template <class... Indices>
|
|
class MultiIndex;
|
|
|
|
// container_range.h
|
|
template <class... Ranges>
|
|
class ContainerRangeFactory;
|
|
|
|
// container_range.h
|
|
template <class... Ranges>
|
|
class ContainerRange;
|
|
|
|
// container_range.h
|
|
template <class... Indices>
|
|
class ContainerIndex;
|
|
|
|
// multi_array.h
|
|
template <typename T, class Range>
|
|
class MultiArrayBase;
|
|
|
|
// multi_array.h
|
|
template <typename T, class Range>
|
|
class MutableMultiArrayBase;
|
|
|
|
// multi_array.h
|
|
template <typename T, class Range>
|
|
class MultiArray;
|
|
|
|
// multi_array_operation.h
|
|
template <typename T>
|
|
class OperationBase;
|
|
|
|
// multi_array_operation.h
|
|
template <typename T>
|
|
class MutableOperationBase;
|
|
|
|
// multi_array_operation.h
|
|
template <class OperationClass>
|
|
class OperationTemplate;
|
|
|
|
// multi_array_operation.h
|
|
template <typename T, class... Ranges>
|
|
class OperationMaster;
|
|
|
|
// multi_array_operation.h
|
|
template <typename T, class... Ranges>
|
|
class OperationRoot;
|
|
|
|
// multi_array_operation.h
|
|
template <typename T, class... Ranges>
|
|
class ConstOperationRoot;
|
|
|
|
// multi_array_operation.h
|
|
template <typename T, class OpFunction, class... Ops>
|
|
class Operation;
|
|
|
|
/*
|
|
// multi_array_operation.h
|
|
template <typename T, class InRange, class TotalInRange, class OutRange, class TotalRange>
|
|
class MultiArrayOperationMap;
|
|
|
|
// multi_array_operation.h
|
|
template <typename T, class ContractOperation, class Range, class... MAOps>
|
|
class MultiArrayContraction;
|
|
|
|
// slice.h
|
|
template <typename T, class Range, class MARange>
|
|
class Slice;
|
|
|
|
// slice.h
|
|
template <typename T, class Range, class MARange>
|
|
class ConstSlice;
|
|
|
|
// manipulator.h
|
|
template <typename T>
|
|
class ManipulatorBase;
|
|
|
|
// manipulator.h
|
|
template <typename T>
|
|
class BinReader;
|
|
|
|
// ma_functional.h
|
|
template <class InRange, class OutRange>
|
|
class IndexMapFunction;
|
|
|
|
// ma_functional.h
|
|
class vec3d2Function;
|
|
|
|
// ma_functional.h
|
|
class pyProjFunction;
|
|
|
|
// ma_functional.h
|
|
class pyProjNoSymFunction;
|
|
*/
|
|
}
|
|
|
|
#endif
|