cnorxz/src/base_def.h

177 lines
3.8 KiB
C
Raw Normal View History

2017-02-16 11:20:40 +01:00
// -*- C++ -*-
#ifndef __base_def_h__
#define __base_def_h__
#include <cassert>
#define DEBUG_MODE_X
2017-02-21 17:41:48 +01:00
#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
2017-03-28 17:55:12 +02:00
#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
2017-02-16 11:20:40 +01:00
namespace MultiArrayTools
{
template <class MultiArray>
void checkPtr(const MultiArray& in, bool check = false)
{
static MultiArray const* ptr = nullptr;
if(not check){
ptr = &in;
}
else {
assert(ptr == &in);
}
}
2017-02-16 11:20:40 +01:00
/***********************
* Provided Types *
***********************/
// range_base.h
enum class RangeType;
2017-05-24 19:01:02 +02:00
// range_base.h
2017-07-28 11:33:31 +02:00
class RangeFactoryBase;
2017-05-24 19:01:02 +02:00
2017-08-04 11:27:47 +02:00
// range_base.h
class RangeBase;
2017-02-16 11:20:40 +01:00
// range_base.h
template <class Index>
2017-07-28 11:33:31 +02:00
class RangeInterface;
2017-02-16 11:20:40 +01:00
// index_base.h
2017-07-28 11:33:31 +02:00
class IndexBase;
2017-02-16 11:20:40 +01:00
// index_base.h
2017-07-28 11:33:31 +02:00
template <typename MetaType>
class IndexInterface;
2017-02-16 11:20:40 +01:00
2017-07-28 11:33:31 +02:00
// single_range.h
2017-02-16 11:20:40 +01:00
template <typename U, RangeType TYPE>
2017-07-28 11:33:31 +02:00
class SingleRange;
2017-02-16 11:20:40 +01:00
// single_range.h
template <typename U, RangeType TYPE>
2017-07-28 11:33:31 +02:00
class SingleRangeFactory;
// single_range.h
2017-08-04 11:27:47 +02:00
template <typename U, RangeType TYPE>
2017-07-28 11:33:31 +02:00
class SingleIndex;
// multi_range.h
template <class... Ranges>
class MultiRangeFactory;
// multi_range.h
template <class... Ranges>
class MultiRange;
2017-02-16 11:20:40 +01:00
// multi_range.h
template <class... Indices>
class MultiIndex;
2017-07-28 11:33:31 +02:00
// container_range.h
2017-02-16 11:20:40 +01:00
template <class... Ranges>
2017-07-28 11:33:31 +02:00
class ContainerRangeFactory;
2017-02-26 18:14:58 +01:00
2017-07-28 11:33:31 +02:00
// container_range.h
template <class... Ranges>
class ContainerRange;
// container_range.h
template <class... Indices>
class ContainerIndex;
/*
2017-02-26 18:14:58 +01:00
// multi_array.h
template <typename T, class Range>
class MultiArrayBase;
2017-03-20 11:21:33 +01:00
// multi_array.h
template <typename T, class Range>
class MutableMultiArrayBase;
2017-02-16 11:20:40 +01:00
// multi_array.h
template <typename T, class Range>
class MultiArray;
// multi_array_operation.h
template <typename T>
2017-02-16 11:20:40 +01:00
class MultiArrayOperationBase;
// multi_array_operation.h
template <typename T>
class MutableMultiArrayOperationBase;
// multi_array_operation.h
template <typename T, class Range>
class MultiArrayOperationRoot;
// multi_array_operation.h
template <typename T, class Range>
class ConstMultiArrayOperationRoot;
// multi_array_operation.h
template <typename T, class InRange, class TotalInRange, class OutRange, class TotalRange>
class MultiArrayOperationMap;
2017-02-16 11:20:40 +01:00
// multi_array_operation.h
template <typename T, class Operation, class... MAOps>
2017-02-16 11:20:40 +01:00
class MultiArrayOperation;
2017-02-23 19:33:46 +01:00
2017-03-21 15:18:34 +01:00
// multi_array_operation.h
2017-03-22 11:44:33 +01:00
template <typename T, class ContractOperation, class Range, class... MAOps>
2017-03-21 15:18:34 +01:00
class MultiArrayContraction;
2017-02-23 19:33:46 +01:00
// slice.h
2017-02-27 17:00:51 +01:00
template <typename T, class Range, class MARange>
2017-02-23 19:33:46 +01:00
class Slice;
2017-03-08 20:10:11 +01:00
// slice.h
template <typename T, class Range, class MARange>
class ConstSlice;
2017-03-08 20:10:11 +01:00
// 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;
2017-04-27 19:03:02 +02:00
// ma_functional.h
class pyProjFunction;
// ma_functional.h
class pyProjNoSymFunction;
2017-07-28 11:33:31 +02:00
*/
2017-02-16 11:20:40 +01:00
}
#endif