// -*- C++ -*- #ifndef __base_def_h__ #define __base_def_h__ #include #define DEBUG_MODE_X #ifdef DEBUG_MODE_X #include #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 namespace MultiArrayTools { template 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 MultiRangeType; // range_base.h template class RangeBase; // range_base.h template class SubRangeBase; // index_base.h class IndefinitIndexBase; // index_base.h template class IndexBase; // single_range.h template class SingleIndex; // single_range.h template class SingleRange; // multi_range.h template class MultiIndex; // multi_range.h template class MultiRange; // multi_array.h template class MultiArrayBase; // multi_array.h template class MutableMultiArrayBase; // multi_array.h template class MultiArray; // multi_array_operation.h template class MultiArrayOperationBase; // multi_array_operation.h template class MutableMultiArrayOperationBase; // multi_array_operation.h template class MultiArrayOperationRoot; // multi_array_operation.h template class ConstMultiArrayOperationRoot; // multi_array_operation.h template class MultiArrayOperationMap; // multi_array_operation.h template class MultiArrayOperation; // multi_array_operation.h template class MultiArrayContraction; // slice.h template class Slice; // slice.h template class ConstSlice; // manipulator.h template class ManipulatorBase; // manipulator.h template class BinReader; // ma_functional.h template class IndexMapFunction; // ma_functional.h class vec3d2Function; } #endif