ContainerRange = MultiRange (NOT FINISHED); TODO: Cast MultiIndex <-> ContainerIndex + Instanciate Prototype of ContainerIndex within each MultiArray(Base)-Instance
This commit is contained in:
parent
ca70cd19f7
commit
516f2ed3a4
5 changed files with 33 additions and 25 deletions
|
@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 2.8)
|
|||
|
||||
project(multi_array)
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror -std=c++11 -Wpedantic -Wno-uninitialized -O3")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror -std=c++11 -Wpedantic -Wno-uninitialized -O3 -g")
|
||||
|
||||
enable_testing()
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@ namespace MultiArrayTools
|
|||
|
||||
typedef ContainerRange<T,SRanges...> CRange;
|
||||
typedef MultiArrayBase<T,SRanges...> MAB;
|
||||
typedef typename CRange::IndexType IndexType;
|
||||
typedef ContainerIndex<T,typename SRanges::IndexType...> IndexType;
|
||||
|
||||
DEFAULT_MEMBERS(MultiArray);
|
||||
MultiArray(const std::shared_ptr<SRanges>&... ranges);
|
||||
|
@ -37,8 +37,8 @@ namespace MultiArrayTools
|
|||
|
||||
virtual T& operator[](const IndexType& i) override;
|
||||
virtual const T& operator[](const IndexType& i) const override;
|
||||
virtual T& at(const typename CRange::IndexType::MetaType& meta) override;
|
||||
virtual const T& at(const typename CRange::IndexType::MetaType& meta) const override;
|
||||
virtual T& at(const typename IndexType::MetaType& meta) override;
|
||||
virtual const T& at(const typename IndexType::MetaType& meta) const override;
|
||||
|
||||
virtual bool isConst() const override;
|
||||
virtual bool isSlice() const override;
|
||||
|
@ -131,25 +131,25 @@ namespace MultiArrayTools
|
|||
} */
|
||||
|
||||
template <typename T, class... SRanges>
|
||||
T& MultiArray<T,SRanges...>::operator[](const typename CRange::IndexType& i)
|
||||
T& MultiArray<T,SRanges...>::operator[](const IndexType& i)
|
||||
{
|
||||
return mCont[ i.pos() ];
|
||||
}
|
||||
|
||||
template <typename T, class... SRanges>
|
||||
const T& MultiArray<T,SRanges...>::operator[](const typename CRange::IndexType& i) const
|
||||
const T& MultiArray<T,SRanges...>::operator[](const IndexType& i) const
|
||||
{
|
||||
return mCont[ i.pos() ];
|
||||
}
|
||||
|
||||
template <typename T, class... SRanges>
|
||||
T& MultiArray<T,SRanges...>::at(const typename CRange::IndexType::MetaType& meta)
|
||||
T& MultiArray<T,SRanges...>::at(const typename IndexType::MetaType& meta)
|
||||
{
|
||||
return mCont[ MAB::beginIndex().at(meta).pos() ];
|
||||
}
|
||||
|
||||
template <typename T, class... SRanges>
|
||||
const T& MultiArray<T,SRanges...>::at(const typename CRange::IndexType::MetaType& meta) const
|
||||
const T& MultiArray<T,SRanges...>::at(const typename IndexType::MetaType& meta) const
|
||||
{
|
||||
return mCont[ MAB::beginIndex().at(meta).pos() ];
|
||||
}
|
||||
|
|
|
@ -24,7 +24,7 @@ namespace MultiArrayTools
|
|||
|
||||
typedef T value_type;
|
||||
typedef ContainerRange<T,SRanges...> CRange;
|
||||
typedef typename CRange::IndexType IndexType;
|
||||
typedef ContainerIndex<T,typename SRanges::IndexType...> IndexType;
|
||||
|
||||
DEFAULT_MEMBERS(MultiArrayBase);
|
||||
MultiArrayBase(const std::shared_ptr<SRanges>&... ranges);
|
||||
|
@ -70,7 +70,7 @@ namespace MultiArrayTools
|
|||
|
||||
typedef ContainerRange<T,SRanges...> CRange;
|
||||
typedef MultiArrayBase<T,SRanges...> MAB;
|
||||
typedef typename CRange::IndexType IndexType;
|
||||
typedef ContainerIndex<T,typename SRanges::IndexType...> IndexType;
|
||||
|
||||
using MultiArrayBase<T,SRanges...>::operator[];
|
||||
using MultiArrayBase<T,SRanges...>::at;
|
||||
|
@ -134,14 +134,14 @@ namespace MultiArrayTools
|
|||
template <typename T, class... SRanges>
|
||||
typename MultiArrayBase<T,SRanges...>::IndexType MultiArrayBase<T,SRanges...>::begin() const
|
||||
{
|
||||
auto i = mRange->begin();
|
||||
IndexType i = mRange->begin();
|
||||
return i.setData(data());
|
||||
}
|
||||
|
||||
template <typename T, class... SRanges>
|
||||
typename MultiArrayBase<T,SRanges...>::IndexType MultiArrayBase<T,SRanges...>::end() const
|
||||
{
|
||||
auto i = mRange->end();
|
||||
IndexType i = mRange->end();
|
||||
return i.setData(data());
|
||||
}
|
||||
|
||||
|
@ -149,7 +149,7 @@ namespace MultiArrayTools
|
|||
typename MultiArrayBase<T,SRanges...>::IndexType
|
||||
MultiArrayBase<T,SRanges...>::beginIndex() const
|
||||
{
|
||||
auto i = mRange->begin();
|
||||
IndexType i = mRange->begin();
|
||||
return i.setData(data());
|
||||
}
|
||||
|
||||
|
@ -157,7 +157,7 @@ namespace MultiArrayTools
|
|||
typename MultiArrayBase<T,SRanges...>::IndexType
|
||||
MultiArrayBase<T,SRanges...>::endIndex() const
|
||||
{
|
||||
auto i = mRange->end();
|
||||
IndexType i = mRange->end();
|
||||
return i.setData(data());
|
||||
}
|
||||
|
||||
|
|
|
@ -127,7 +127,7 @@ namespace MultiArrayTools
|
|||
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
template <typename T, class... Ranges>
|
||||
class ContainerRangeFactory : public RangeFactoryBase
|
||||
{
|
||||
|
@ -143,8 +143,8 @@ namespace MultiArrayTools
|
|||
|
||||
protected:
|
||||
|
||||
};
|
||||
|
||||
};*/
|
||||
/*
|
||||
template <typename T, class... Ranges>
|
||||
class ContainerRange : public RangeInterface<ContainerIndex<T,typename Ranges::IndexType...> >
|
||||
{
|
||||
|
@ -187,6 +187,10 @@ namespace MultiArrayTools
|
|||
static constexpr size_t ISSTATIC = SubProp<Ranges...>::ISSTATIC;
|
||||
static constexpr size_t SIZE = SubProp<Ranges...>::SIZE;
|
||||
};
|
||||
*/
|
||||
|
||||
//template <typename T, class... Ranges>
|
||||
//using ContainerRange = MultiRange<Ranges...>;
|
||||
|
||||
} // end namespace MultiArrayTools
|
||||
|
||||
|
@ -544,7 +548,7 @@ namespace MultiArrayTools
|
|||
/*****************************
|
||||
* ContainerRangeFactory *
|
||||
*****************************/
|
||||
|
||||
/*
|
||||
template <typename T, class... Ranges>
|
||||
ContainerRangeFactory<T,Ranges...>::ContainerRangeFactory(const std::shared_ptr<Ranges>&... rs)
|
||||
{
|
||||
|
@ -564,11 +568,11 @@ namespace MultiArrayTools
|
|||
setSelf();
|
||||
return mProd;
|
||||
}
|
||||
|
||||
*/
|
||||
/**********************
|
||||
* ContainerRange *
|
||||
**********************/
|
||||
|
||||
/*
|
||||
template <typename T, class... Ranges>
|
||||
ContainerRange<T,Ranges...>::ContainerRange(const std::shared_ptr<Ranges>&... rs) :
|
||||
mSpace( std::make_tuple( rs... ) ) {}
|
||||
|
@ -627,7 +631,7 @@ namespace MultiArrayTools
|
|||
i = size();
|
||||
return i;
|
||||
}
|
||||
|
||||
*/
|
||||
} // end namespace MultiArrayTools
|
||||
|
||||
|
||||
|
|
|
@ -51,12 +51,16 @@ namespace MultiArrayTools
|
|||
class MultiIndex;
|
||||
|
||||
// container_range.h
|
||||
//template <typename T, class... Ranges>
|
||||
//class ContainerRangeFactory;
|
||||
template <typename T, class... Ranges>
|
||||
class ContainerRangeFactory;
|
||||
using ContainerRangeFactory = MultiRangeFactory<Ranges...>;
|
||||
|
||||
// container_range.h
|
||||
//template <typename T, class... Ranges>
|
||||
//class ContainerRange;
|
||||
template <typename T, class... Ranges>
|
||||
class ContainerRange;
|
||||
using ContainerRange = MultiRange<Ranges...>;
|
||||
|
||||
// container_range.h
|
||||
template <typename T, class... Indices>
|
||||
|
|
Loading…
Reference in a new issue