2017-12-17 17:40:55 +01:00
|
|
|
// -*- C++ -*-
|
|
|
|
|
|
|
|
#ifndef __ranges_base_def_h__
|
|
|
|
#define __ranges_base_def_h__
|
|
|
|
|
2018-10-29 14:19:42 +01:00
|
|
|
#include <cstdlib>
|
|
|
|
|
2018-11-01 22:11:08 +01:00
|
|
|
#include <iostream>
|
|
|
|
#ifndef CHECK
|
|
|
|
#define CHECK std::cout << __FILE__ << ": @" << __LINE__ << " in " << __func__ << std::endl;
|
|
|
|
#endif
|
|
|
|
#ifndef VCHECK
|
|
|
|
#define VCHECK(a) std::cout << __FILE__ << ": @" << __LINE__ \
|
|
|
|
<< " in " << __func__ << ": " << #a << " = " << a << std::endl;
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
2017-12-17 17:40:55 +01:00
|
|
|
namespace MultiArrayTools
|
|
|
|
{
|
2018-10-29 14:19:42 +01:00
|
|
|
|
|
|
|
template <class R>
|
|
|
|
using SIZET = size_t;
|
|
|
|
|
2017-12-17 17:40:55 +01:00
|
|
|
/***********************
|
|
|
|
* Provided Types *
|
|
|
|
***********************/
|
|
|
|
|
|
|
|
// range_base.h
|
|
|
|
enum class SpaceType;
|
|
|
|
|
|
|
|
// range_base.h
|
|
|
|
class RangeFactoryBase;
|
|
|
|
|
|
|
|
// range_base.h
|
|
|
|
class RangeBase;
|
|
|
|
|
|
|
|
// range_base.h
|
|
|
|
template <class Index>
|
|
|
|
class RangeInterface;
|
|
|
|
|
|
|
|
// index_base.h
|
|
|
|
template <class I, typename MetaType>
|
|
|
|
class IndexInterface;
|
|
|
|
|
|
|
|
// single_range.h
|
|
|
|
template <typename U, SpaceType TYPE>
|
|
|
|
class SingleRange;
|
|
|
|
|
|
|
|
// single_range.h
|
|
|
|
template <typename U, SpaceType TYPE>
|
|
|
|
class SingleRangeFactory;
|
|
|
|
|
|
|
|
// single_range.h
|
|
|
|
template <typename U, SpaceType TYPE>
|
|
|
|
class SingleIndex;
|
2018-12-21 18:25:45 +01:00
|
|
|
|
|
|
|
// subrange.h
|
|
|
|
template <class Index>
|
|
|
|
class SubIndex;
|
|
|
|
|
|
|
|
// subrange.h
|
|
|
|
template <class Range>
|
|
|
|
class SubRangeFactory;
|
|
|
|
|
|
|
|
// subrange.h
|
|
|
|
template <class Range>
|
|
|
|
class SubRange;
|
2017-12-17 17:40:55 +01:00
|
|
|
|
|
|
|
// 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
|
2018-03-01 18:16:12 +01:00
|
|
|
//template <typename T, class... Ranges>
|
|
|
|
//class ContainerRangeFactory;
|
2018-02-15 20:06:14 +01:00
|
|
|
template <typename T, class... Ranges>
|
2018-03-01 18:16:12 +01:00
|
|
|
using ContainerRangeFactory = MultiRangeFactory<Ranges...>;
|
2017-12-17 17:40:55 +01:00
|
|
|
|
|
|
|
// container_range.h
|
2018-03-01 18:16:12 +01:00
|
|
|
//template <typename T, class... Ranges>
|
|
|
|
//class ContainerRange;
|
2018-02-15 20:06:14 +01:00
|
|
|
template <typename T, class... Ranges>
|
2018-03-01 18:16:12 +01:00
|
|
|
using ContainerRange = MultiRange<Ranges...>;
|
|
|
|
|
2017-12-17 17:40:55 +01:00
|
|
|
// container_range.h
|
2018-02-15 20:06:14 +01:00
|
|
|
template <typename T, class... Indices>
|
2017-12-17 17:40:55 +01:00
|
|
|
class ContainerIndex;
|
|
|
|
|
|
|
|
// anonymous_range.h
|
|
|
|
class AnonymousRangeFactory;
|
|
|
|
|
|
|
|
// anonymous_range.h
|
2018-07-16 15:55:55 +02:00
|
|
|
//class AnonymousRange;
|
2018-07-16 00:12:05 +02:00
|
|
|
|
2018-11-06 16:35:37 +01:00
|
|
|
// dynamic_range.h
|
|
|
|
class AbstractIW;
|
|
|
|
|
2018-10-22 14:27:55 +02:00
|
|
|
// dynamic_range.h
|
2018-10-30 15:06:29 +01:00
|
|
|
template <class EC>
|
2018-10-22 14:27:55 +02:00
|
|
|
class DynamicIndex;
|
|
|
|
|
|
|
|
// dynamic_range.h
|
2018-10-30 15:06:29 +01:00
|
|
|
template <class EC>
|
2018-10-22 14:27:55 +02:00
|
|
|
class DynamicRangeFactory;
|
|
|
|
|
|
|
|
// dynamic_range.h
|
2018-10-30 15:06:29 +01:00
|
|
|
template <class EC>
|
|
|
|
class DynamicRange;
|
2018-10-22 14:27:55 +02:00
|
|
|
|
2018-09-12 17:05:27 +02:00
|
|
|
// value_range.h
|
|
|
|
template <typename U>
|
|
|
|
class ValueRange;
|
|
|
|
|
|
|
|
template <typename U>
|
|
|
|
class ValueRangeFactory;
|
|
|
|
|
|
|
|
template <typename U>
|
|
|
|
class ValueIndex;
|
2017-12-17 17:40:55 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|