dev #3

Merged
chizeta merged 9 commits from dev into main 2024-02-04 00:49:58 +01:00
40 changed files with 279 additions and 305 deletions
Showing only changes of commit 8a0fdf7a7c - Show all commits

View file

@ -2,10 +2,9 @@
/** /**
@file include/array/aindex.cc.h @file include/array/aindex.cc.h
@brief ... @brief Array index template implementations.
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
Mail: chizeta@f3l.de Mail: chizeta@f3l.de
**/ **/

View file

@ -2,10 +2,9 @@
/** /**
@file include/array/aindex.h @file include/array/aindex.h
@brief ... @brief Array index declaration.
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
Mail: chizeta@f3l.de Mail: chizeta@f3l.de
**/ **/

View file

@ -2,10 +2,9 @@
/** /**
@file include/array/array_base.cc.h @file include/array/array_base.cc.h
@brief ... @brief Array base class template implementations.
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
Mail: chizeta@f3l.de Mail: chizeta@f3l.de
**/ **/

View file

@ -2,10 +2,9 @@
/** /**
@file include/array/array_base.h @file include/array/array_base.h
@brief ... @brief Array base class declarations.
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
Mail: chizeta@f3l.de Mail: chizeta@f3l.de
**/ **/

View file

@ -2,10 +2,9 @@
/** /**
@file include/array/marray.cc.h @file include/array/marray.cc.h
@brief ... @brief MArray implementations.
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
Mail: chizeta@f3l.de Mail: chizeta@f3l.de
**/ **/

View file

@ -2,10 +2,9 @@
/** /**
@file include/array/marray.h @file include/array/marray.h
@brief ... @brief MArray declarations.
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
Mail: chizeta@f3l.de Mail: chizeta@f3l.de
**/ **/

View file

@ -2,10 +2,9 @@
/** /**
@file include/array/slice.cc.h @file include/array/slice.cc.h
@brief ... @brief Slice implementations.
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
Mail: chizeta@f3l.de Mail: chizeta@f3l.de
**/ **/

View file

@ -2,10 +2,9 @@
/** /**
@file include/array/slice.h @file include/array/slice.h
@brief ... @brief Slice declarations.
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
Mail: chizeta@f3l.de Mail: chizeta@f3l.de
**/ **/

View file

@ -84,7 +84,7 @@ namespace CNORXZ
| library types | | library types |
+===================*/ +===================*/
/*** /*
Naming Prefixes: Naming Prefixes:
D = Y = Dynamic D = Y = Dynamic
V = X = Virtual V = X = Virtual
@ -100,7 +100,7 @@ namespace CNORXZ
A = (const) Array A = (const) Array
B = (mutable) Array B = (mutable) Array
F = Functional, Map,... F = Functional, Map,...
***/ */
// default template parameter // default template parameter
class None {}; class None {};

View file

@ -2,10 +2,9 @@
/** /**
@file include/memory/memcount.h @file include/memory/memcount.h
@brief ... @brief MemCount declaration.
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
Mail: chizeta@f3l.de Mail: chizeta@f3l.de
**/ **/

View file

@ -2,10 +2,9 @@
/** /**
@file include/memory/memory.cc.h @file include/memory/memory.cc.h
@brief ... @brief Memory template implementations main header.
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
Mail: chizeta@f3l.de Mail: chizeta@f3l.de
**/ **/

View file

@ -2,10 +2,9 @@
/** /**
@file include/memory/memory.h @file include/memory/memory.h
@brief ... @brief Memory main heade.
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
Mail: chizeta@f3l.de Mail: chizeta@f3l.de
**/ **/

View file

@ -16,9 +16,9 @@
namespace CNORXZ namespace CNORXZ
{ {
/************************************ /*==================================+
* standard operatrions (unary) * | standard operatrions (unary) |
************************************/ +==================================*/
template <class Op> template <class Op>
constexpr decltype(auto) minus(const COpInterface<Op>& op) constexpr decltype(auto) minus(const COpInterface<Op>& op)
@ -26,9 +26,9 @@ namespace CNORXZ
return operation( [](const auto& a) { return -a; }, op.THIS() ); return operation( [](const auto& a) { return -a; }, op.THIS() );
} }
/************************************* /*===================================+
* standard operatrions (binary) * | standard operatrions (binary) |
*************************************/ +===================================*/
template <class Op1, class Op2> template <class Op1, class Op2>
constexpr decltype(auto) plus(const COpInterface<Op1>& op1, const COpInterface<Op2>& op2) constexpr decltype(auto) plus(const COpInterface<Op1>& op1, const COpInterface<Op2>& op2)
@ -65,9 +65,9 @@ namespace CNORXZ
op1.THIS(), op2.THIS() ); op1.THIS(), op2.THIS() );
} }
/***************************************** /*=======================================+
* operators for standard operations * | operators for standard operations |
*****************************************/ +=======================================*/
template <class Op> template <class Op>
constexpr decltype(auto) operator-(const COpInterface<Op>& op) constexpr decltype(auto) operator-(const COpInterface<Op>& op)

View file

@ -16,9 +16,9 @@
namespace CNORXZ namespace CNORXZ
{ {
/*********************** /*=====================+
* PlusCC / PlusCX * | PlusCC / PlusCX |
***********************/ +=====================*/
inline decltype(auto) inline decltype(auto)
PlusCC<Double,Double,AVX::ND>::eval(const Consecutive<Double,AVX::ND>& a, PlusCC<Double,Double,AVX::ND>::eval(const Consecutive<Double,AVX::ND>& a,
@ -80,9 +80,9 @@ namespace CNORXZ
return o; return o;
} }
/************************* /*=======================+
* MinusCC / MinusCX * | MinusCC / MinusCX |
*************************/ +=======================*/
inline decltype(auto) inline decltype(auto)
MinusCC<Double,Double,AVX::ND>::eval(const Consecutive<Double,AVX::ND>& a, MinusCC<Double,Double,AVX::ND>::eval(const Consecutive<Double,AVX::ND>& a,
@ -144,9 +144,9 @@ namespace CNORXZ
return o; return o;
} }
/*********************************** /*=================================+
* MultipliesCC / MultipliesCX * | MultipliesCC / MultipliesCX |
***********************************/ +=================================*/
inline decltype(auto) inline decltype(auto)
MultipliesCC<Double,Double,AVX::ND>::eval(const Consecutive<Double,AVX::ND>& a, MultipliesCC<Double,Double,AVX::ND>::eval(const Consecutive<Double,AVX::ND>& a,
@ -210,9 +210,9 @@ namespace CNORXZ
} }
/***************************** /*===========================+
* DividesCC / DividesCX * | DividesCC / DividesCX |
*****************************/ +===========================*/
inline decltype(auto) inline decltype(auto)
DividesCC<Double,Double,AVX::ND>::eval(const Consecutive<Double,AVX::ND>& a, DividesCC<Double,Double,AVX::ND>::eval(const Consecutive<Double,AVX::ND>& a,

View file

@ -120,9 +120,9 @@ namespace CNORXZ
return consecFuncAI<F,Dst,Args...>(f, dst, args..., std::make_index_sequence<N>{}); return consecFuncAI<F,Dst,Args...>(f, dst, args..., std::make_index_sequence<N>{});
} }
/****************************** /*============================+
* basic operations: plus * | basic operations: plus |
******************************/ +============================*/
template <typename T, typename U, SizeT N> template <typename T, typename U, SizeT N>
constexpr decltype(auto) constexpr decltype(auto)
@ -156,9 +156,9 @@ namespace CNORXZ
return consecFuncA<N>( [](auto& x, const auto& y) { return x += y; }, o, a ); return consecFuncA<N>( [](auto& x, const auto& y) { return x += y; }, o, a );
} }
/******************************* /*=============================+
* basic operations: minus * | basic operations: minus |
*******************************/ +=============================*/
template <typename T, typename U, SizeT N> template <typename T, typename U, SizeT N>
constexpr decltype(auto) MinusCC<T,U,N>::eval(const Consecutive<T,N>& a, const Consecutive<U,N>& b) constexpr decltype(auto) MinusCC<T,U,N>::eval(const Consecutive<T,N>& a, const Consecutive<U,N>& b)
@ -190,9 +190,9 @@ namespace CNORXZ
return consecFuncA<N>( [](auto& x, const auto& y) { return x -= y; }, o, a ); return consecFuncA<N>( [](auto& x, const auto& y) { return x -= y; }, o, a );
} }
/*********************************** /*=================================+
* basic operations: muliplies * | basic operations: muliplies |
***********************************/ +=================================*/
template <typename T, typename U, SizeT N> template <typename T, typename U, SizeT N>
constexpr decltype(auto) MultipliesCC<T,U,N>::eval(const Consecutive<T,N>& a, const Consecutive<U,N>& b) constexpr decltype(auto) MultipliesCC<T,U,N>::eval(const Consecutive<T,N>& a, const Consecutive<U,N>& b)
@ -224,9 +224,9 @@ namespace CNORXZ
return consecFuncA<N>( [](const auto& x, const auto& y) { return x *= y; }, o, a ); return consecFuncA<N>( [](const auto& x, const auto& y) { return x *= y; }, o, a );
} }
/********************************* /*===============================+
* basic operations: divides * | basic operations: divides |
*********************************/ +===============================*/
template <typename T, typename U, SizeT N> template <typename T, typename U, SizeT N>
constexpr decltype(auto) DividesCC<T,U,N>::eval(const Consecutive<T,N>& a, const Consecutive<U,N>& b) constexpr decltype(auto) DividesCC<T,U,N>::eval(const Consecutive<T,N>& a, const Consecutive<U,N>& b)

View file

@ -43,9 +43,9 @@ namespace CNORXZ
template <typename T, SizeT N> template <typename T, SizeT N>
struct consecutive_size<Consecutive<T,N>> { static constexpr SizeT value = N; }; struct consecutive_size<Consecutive<T,N>> { static constexpr SizeT value = N; };
/**************************************** /*======================================+
* consecutive generating functions * | consecutive generating functions |
****************************************/ +======================================*/
template <typename T, class EPosT, SizeT... Is> template <typename T, class EPosT, SizeT... Is>
inline decltype(auto) vregi(const T* d, const EPosT& pos, std::index_sequence<Is...> is); inline decltype(auto) vregi(const T* d, const EPosT& pos, std::index_sequence<Is...> is);
@ -56,9 +56,9 @@ namespace CNORXZ
template <typename T, class EPosT> template <typename T, class EPosT>
inline decltype(auto) vreg(T* d, const EPosT& pos); inline decltype(auto) vreg(T* d, const EPosT& pos);
/****************** /*================+
* ConsecFunc * | ConsecFunc |
******************/ +================*/
template <SizeT I, typename T> template <SizeT I, typename T>
constexpr decltype(auto) consecGet(const T& a); constexpr decltype(auto) consecGet(const T& a);
@ -86,9 +86,9 @@ namespace CNORXZ
template <SizeT N, class F, typename Dst, typename... Args> template <SizeT N, class F, typename Dst, typename... Args>
constexpr Dst& consecFuncA(const F& f, Dst& dst, const Args&... args); constexpr Dst& consecFuncA(const F& f, Dst& dst, const Args&... args);
/****************************** /*============================+
* basic operations: plus * | basic operations: plus |
******************************/ +============================*/
template <typename T, typename U, SizeT N> template <typename T, typename U, SizeT N>
struct PlusCC struct PlusCC
@ -133,9 +133,9 @@ namespace CNORXZ
constexpr Consecutive<T,N>& operator+=(Consecutive<T,N>& o, const U& a) constexpr Consecutive<T,N>& operator+=(Consecutive<T,N>& o, const U& a)
{ return PlusCX<T,U,N>::aeval(o,a); } { return PlusCX<T,U,N>::aeval(o,a); }
/******************************* /*=============================+
* basic operations: minus * | basic operations: minus |
*******************************/ +=============================*/
template <typename T, typename U, SizeT N> template <typename T, typename U, SizeT N>
struct MinusCC struct MinusCC
@ -180,9 +180,9 @@ namespace CNORXZ
constexpr Consecutive<T,N>& operator-=(Consecutive<T,N>& o, const U& a) constexpr Consecutive<T,N>& operator-=(Consecutive<T,N>& o, const U& a)
{ return MinusCX<T,U,N>::eval(o,a); } { return MinusCX<T,U,N>::eval(o,a); }
/*********************************** /*=================================+
* basic operations: muliplies * | basic operations: muliplies |
***********************************/ +=================================*/
template <typename T, typename U, SizeT N> template <typename T, typename U, SizeT N>
struct MultipliesCC struct MultipliesCC
@ -227,9 +227,9 @@ namespace CNORXZ
constexpr Consecutive<T,N>& operator*=(Consecutive<T,N>& o, const U& a) constexpr Consecutive<T,N>& operator*=(Consecutive<T,N>& o, const U& a)
{ return MultipliesCX<T,U,N>::eval(o,a); } { return MultipliesCX<T,U,N>::eval(o,a); }
/********************************* /*===============================+
* basic operations: divides * | basic operations: divides |
*********************************/ +===============================*/
template <typename T, typename U, SizeT N> template <typename T, typename U, SizeT N>
struct DividesCC struct DividesCC

View file

@ -2,10 +2,9 @@
/** /**
@file include/ranges/crange.cc.h @file include/ranges/crange.cc.h
@brief ... @brief CRange and CIndex template implementations.
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
Mail: chizeta@f3l.de Mail: chizeta@f3l.de
**/ **/

View file

@ -2,8 +2,7 @@
/** /**
@file include/ranges/dindex.cc.h @file include/ranges/dindex.cc.h
@brief ... @brief Dynamic index template implementations.
Copyright (c) 2024 Christian Zimmermann. All rights reserved. Copyright (c) 2024 Christian Zimmermann. All rights reserved.
Mail: chizeta@f3l.de Mail: chizeta@f3l.de

View file

@ -2,7 +2,7 @@
/** /**
@file include/ranges/dindex.h @file include/ranges/dindex.h
@brief DIndex declaration. @brief Dynamic index declaration.
Copyright (c) 2024 Christian Zimmermann. All rights reserved. Copyright (c) 2024 Christian Zimmermann. All rights reserved.
Mail: chizeta@f3l.de Mail: chizeta@f3l.de

View file

@ -2,10 +2,9 @@
/** /**
@file include/ranges/eindex.cc.h @file include/ranges/eindex.cc.h
@brief ... @brief Extension index implementations.
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
Mail: chizeta@f3l.de Mail: chizeta@f3l.de
**/ **/

View file

@ -2,8 +2,7 @@
/** /**
@file include/ranges/eindex.h @file include/ranges/eindex.h
@brief ... @brief Extension index declaration.
Copyright (c) 2024 Christian Zimmermann. All rights reserved. Copyright (c) 2024 Christian Zimmermann. All rights reserved.
Mail: chizeta@f3l.de Mail: chizeta@f3l.de

View file

@ -2,10 +2,9 @@
/** /**
@file include/ranges/index_base.cc.h @file include/ranges/index_base.cc.h
@brief ... @brief Index base template implementation.
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
Mail: chizeta@f3l.de Mail: chizeta@f3l.de
**/ **/
@ -17,9 +16,9 @@
namespace CNORXZ namespace CNORXZ
{ {
/********************** /*====================+
* IndexInterface * | IndexInterface |
**********************/ +====================*/
template <class I, typename MetaType> template <class I, typename MetaType>
IndexInterface<I,MetaType>::IndexInterface() IndexInterface<I,MetaType>::IndexInterface()
@ -113,9 +112,9 @@ namespace CNORXZ
} }
/**************************** /*==========================+
* Non-member functions * | Non-member functions |
****************************/ +==========================*/
template <class I, typename MetaType> template <class I, typename MetaType>
IndexPtr<I,MetaType>& operator++(const IndexPtr<I,MetaType>& i) IndexPtr<I,MetaType>& operator++(const IndexPtr<I,MetaType>& i)

View file

@ -2,10 +2,9 @@
/** /**
@file include/ranges/index_base.h @file include/ranges/index_base.h
@brief ... @brief Index base declaration.
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
Mail: chizeta@f3l.de Mail: chizeta@f3l.de
**/ **/

View file

@ -2,10 +2,9 @@
/** /**
@file include/ranges/index_format.cc.h @file include/ranges/index_format.cc.h
@brief ... @brief Index formats implementations.
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
Mail: chizeta@f3l.de Mail: chizeta@f3l.de
**/ **/
@ -17,9 +16,9 @@
namespace CNORXZ namespace CNORXZ
{ {
/*************** /*=============+
* MFormat * | MFormat |
***************/ +=============*/
template <SizeT N> template <SizeT N>
constexpr MFormat<N>::MFormat(const Arr<UPos,N>& b) : constexpr MFormat<N>::MFormat(const Arr<UPos,N>& b) :
@ -61,9 +60,9 @@ namespace CNORXZ
} }
/**************** /*==============+
* GMFormat * | GMFormat |
****************/ +==============*/
template <class... PosT> template <class... PosT>
constexpr GMFormat<PosT...>::GMFormat(const Tuple<PosT...>& b) : constexpr GMFormat<PosT...>::GMFormat(const Tuple<PosT...>& b) :
@ -115,9 +114,9 @@ namespace CNORXZ
return GMFormat(std::move(std::make_tuple(ps...))); return GMFormat(std::move(std::make_tuple(ps...)));
} }
/*************** /*=============+
* YFormat * | YFormat |
***************/ +=============*/
template <class FormatT> template <class FormatT>
YFormat::YFormat(const FormatT& f) : mB(f.size()) YFormat::YFormat(const FormatT& f) : mB(f.size())

View file

@ -2,8 +2,7 @@
/** /**
@file include/ranges/index_mul.cc.h @file include/ranges/index_mul.cc.h
@brief ... @brief Index multiplication template implementation.
Copyright (c) 2022 Christian Zimmermann. All rights reserved. Copyright (c) 2022 Christian Zimmermann. All rights reserved.
Mail: chizeta@f3l.de Mail: chizeta@f3l.de
@ -18,9 +17,9 @@
namespace CNORXZ namespace CNORXZ
{ {
/********************* /*===================+
* MIndexSptrMul * | MIndexSptrMul |
*********************/ +===================*/
template <class BlockT, class... Indices, class I, SizeT... Is> template <class BlockT, class... Indices, class I, SizeT... Is>
decltype(auto) MIndexSptrMul::evalMX(const Sptr<GMIndex<BlockT,Indices...>>& a, decltype(auto) MIndexSptrMul::evalMX(const Sptr<GMIndex<BlockT,Indices...>>& a,
@ -52,9 +51,9 @@ namespace CNORXZ
} }
/***************** /*===============+
* operator* * | operator* |
*****************/ +===============*/
template <class I1, typename Meta1, class I2, typename Meta2> template <class I1, typename Meta1, class I2, typename Meta2>
inline decltype(auto) operator*(const IndexInterface<I1,Meta1>& a, inline decltype(auto) operator*(const IndexInterface<I1,Meta1>& a,
@ -122,9 +121,9 @@ namespace CNORXZ
return a.mul(b); return a.mul(b);
} }
/*************** /*=============+
* iptrMul * | iptrMul |
***************/ +=============*/
template <class I1, class I2> template <class I1, class I2>
decltype(auto) iptrMul(const Sptr<I1>& a, const Sptr<I2>& b) decltype(auto) iptrMul(const Sptr<I1>& a, const Sptr<I2>& b)

View file

@ -2,10 +2,9 @@
/** /**
@file include/ranges/index_pack.cc.h @file include/ranges/index_pack.cc.h
@brief ... @brief Index pack template implementations.
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
Mail: chizeta@f3l.de Mail: chizeta@f3l.de
**/ **/
@ -17,9 +16,9 @@
namespace CNORXZ namespace CNORXZ
{ {
/************* /*===========+
* SPack * | SPack |
*************/ +===========*/
template <class... Indices> template <class... Indices>
constexpr SPack<Indices...>::SPack(const Sptr<Indices>&... is) : constexpr SPack<Indices...>::SPack(const Sptr<Indices>&... is) :
@ -96,9 +95,9 @@ namespace CNORXZ
return lex(); return lex();
} }
/************************** /*========================+
* SPack (non-member) * | SPack (non-member) |
**************************/ +========================*/
template <class... Indices> template <class... Indices>
constexpr decltype(auto) spack(const Indices&... inds) constexpr decltype(auto) spack(const Indices&... inds)
@ -114,9 +113,9 @@ namespace CNORXZ
return SPack<Indices...>( inds... ); return SPack<Indices...>( inds... );
} }
/************* /*===========+
* DPack * | DPack |
*************/ +===========*/
template <class... Indices> template <class... Indices>
DPack::DPack(const SPack<Indices...>& p) : DPack::DPack(const SPack<Indices...>& p) :
@ -127,9 +126,9 @@ namespace CNORXZ
{} {}
/************************** /*========================+
* DPack (non-member) * | DPack (non-member) |
**************************/ +========================*/
template <class... Indices> template <class... Indices>
DPack dpack(const Indices&... inds) DPack dpack(const Indices&... inds)

View file

@ -2,8 +2,7 @@
/** /**
@file include/ranges/lindex.cc.h @file include/ranges/lindex.cc.h
@brief ... @brief LIndex implementations.
Copyright (c) 2022 Christian Zimmermann. All rights reserved. Copyright (c) 2022 Christian Zimmermann. All rights reserved.
Mail: chizeta@f3l.de Mail: chizeta@f3l.de

View file

@ -2,10 +2,9 @@
/** /**
@file include/ranges/range_base.cc.h @file include/ranges/range_base.cc.h
@brief ... @brief RangeBase template implementations.
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
Mail: chizeta@f3l.de Mail: chizeta@f3l.de
**/ **/

View file

@ -2,10 +2,9 @@
/** /**
@file include/ranges/ranges.cc.h @file include/ranges/ranges.cc.h
@brief ... @brief Ranges template implementation main header
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
Mail: chizeta@f3l.de Mail: chizeta@f3l.de
**/ **/

View file

@ -2,10 +2,9 @@
/** /**
@file include/ranges/srange.cc.h @file include/ranges/srange.cc.h
@brief ... @brief SRange, SRangeFactory and SIndex implementation.
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
Mail: chizeta@f3l.de Mail: chizeta@f3l.de
**/ **/
@ -18,9 +17,9 @@
namespace CNORXZ namespace CNORXZ
{ {
/************** /*============+
* SIndex * | SIndex |
**************/ +============*/
template <typename MetaT, SizeT S> template <typename MetaT, SizeT S>
SIndex<MetaT,S>::SIndex(const RangePtr& range, SizeT pos) : SIndex<MetaT,S>::SIndex(const RangePtr& range, SizeT pos) :
@ -213,9 +212,9 @@ namespace CNORXZ
} }
/********************* /*===================+
* SRangeFactory * | SRangeFactory |
*********************/ +===================*/
template <typename MetaType, SizeT S> template <typename MetaType, SizeT S>
SRangeFactory<MetaType,S>::SRangeFactory(const Arr<MetaType,S>& space) : SRangeFactory<MetaType,S>::SRangeFactory(const Arr<MetaType,S>& space) :
@ -248,9 +247,9 @@ namespace CNORXZ
} }
} }
/************** /*============+
* SRange * | SRange |
**************/ +============*/
template <typename MetaType, SizeT S> template <typename MetaType, SizeT S>
SRange<MetaType,S>::SRange(const Arr<MetaType,S>& space) : SRange<MetaType,S>::SRange(const Arr<MetaType,S>& space) :
@ -338,9 +337,9 @@ namespace CNORXZ
return Vector<Uuid> { this->id() }; return Vector<Uuid> { this->id() };
} }
/******************* /*=================+
* Range Casts * | Range Casts |
*******************/ +=================*/
template <typename MetaType, SizeT S> template <typename MetaType, SizeT S>
Sptr<SRange<MetaType,S>> RangeCast<SRange<MetaType,S>>::func(const RangePtr& r) Sptr<SRange<MetaType,S>> RangeCast<SRange<MetaType,S>>::func(const RangePtr& r)

View file

@ -2,10 +2,9 @@
/** /**
@file include/ranges/urange.cc.h @file include/ranges/urange.cc.h
@brief ... @brief URange, URangeFactory and UIndex implementations.
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
Mail: chizeta@f3l.de Mail: chizeta@f3l.de
**/ **/
@ -25,9 +24,9 @@
namespace CNORXZ namespace CNORXZ
{ {
/***************** /*===============+
* UIndex * | UIndex |
*****************/ +===============*/
template <typename MetaT> template <typename MetaT>
UIndex<MetaT>::UIndex(const RangePtr& range, SizeT pos) : UIndex<MetaT>::UIndex(const RangePtr& range, SizeT pos) :
@ -222,9 +221,9 @@ namespace CNORXZ
return iptrMul(a, b); return iptrMul(a, b);
} }
/********************** /*====================+
* URangeFactory * | URangeFactory |
**********************/ +====================*/
template <typename MetaT> template <typename MetaT>
URangeFactory<MetaT>::URangeFactory(const Vector<MetaT>& space) : URangeFactory<MetaT>::URangeFactory(const Vector<MetaT>& space) :
@ -257,9 +256,9 @@ namespace CNORXZ
} }
} }
/*************** /*=============+
* URange * | URange |
***************/ +=============*/
template <typename MetaT> template <typename MetaT>
URange<MetaT>::URange(const Vector<MetaT>& space) : URange<MetaT>::URange(const Vector<MetaT>& space) :
@ -350,9 +349,9 @@ namespace CNORXZ
return Vector<Uuid> { this->id() }; return Vector<Uuid> { this->id() };
} }
/******************* /*=================+
* Range Casts * | Range Casts |
*******************/ +=================*/
template <typename MetaT> template <typename MetaT>
struct URangeCast struct URangeCast

View file

@ -2,10 +2,9 @@
/** /**
@file include/ranges/xindex.cc.h @file include/ranges/xindex.cc.h
@brief ... @brief XIndexBase and XIndex template implementations.
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
Mail: chizeta@f3l.de Mail: chizeta@f3l.de
**/ **/
@ -18,9 +17,9 @@
namespace CNORXZ namespace CNORXZ
{ {
/************** /*============+
* XIndex * | XIndex |
**************/ +============*/
template <class Index, typename Meta> template <class Index, typename Meta>
XIndex<Index,Meta>::XIndex(const IndexPtr<Index,Meta>& i) : XIndex<Index,Meta>::XIndex(const IndexPtr<Index,Meta>& i) :

View file

@ -19,9 +19,9 @@
namespace CNORXZ namespace CNORXZ
{ {
/*********** /*=========+
* For * | For |
***********/ +=========*/
template <SizeT L, class Xpr, class F> template <SizeT L, class Xpr, class F>
constexpr For<L,Xpr,F>::For(SizeT size, const IndexId<L>& id, const Xpr& xpr, F&& f) : constexpr For<L,Xpr,F>::For(SizeT size, const IndexId<L>& id, const Xpr& xpr, F&& f) :
@ -83,9 +83,9 @@ namespace CNORXZ
return mXpr.rootSteps(id); return mXpr.rootSteps(id);
} }
/************************ /*======================+
* For (non-member) * | For (non-member) |
************************/ +======================*/
template <SizeT L, class Xpr, class F> template <SizeT L, class Xpr, class F>
constexpr decltype(auto) mkFor(SizeT size, const IndexId<L>& id, const Xpr& xpr, F&& f) constexpr decltype(auto) mkFor(SizeT size, const IndexId<L>& id, const Xpr& xpr, F&& f)
@ -99,9 +99,9 @@ namespace CNORXZ
return For<L,Xpr>(size, id, xpr, NoF {}); return For<L,Xpr>(size, id, xpr, NoF {});
} }
/************ /*==========+
* SFor * | SFor |
************/ +==========*/
template <SizeT N, SizeT L, class Xpr, class F> template <SizeT N, SizeT L, class Xpr, class F>
constexpr SFor<N,L,Xpr,F>::SFor(const IndexId<L>& id, const Xpr& xpr, F&& f) : constexpr SFor<N,L,Xpr,F>::SFor(const IndexId<L>& id, const Xpr& xpr, F&& f) :
@ -203,9 +203,9 @@ namespace CNORXZ
return; return;
} }
/************************* /*=======================+
* SFor (non-member) * | SFor (non-member) |
*************************/ +=======================*/
template <SizeT N, SizeT L, class Xpr, class F> template <SizeT N, SizeT L, class Xpr, class F>
constexpr decltype(auto) mkSFor(const IndexId<L>& id, const Xpr& xpr, F&& f) constexpr decltype(auto) mkSFor(const IndexId<L>& id, const Xpr& xpr, F&& f)
@ -219,9 +219,9 @@ namespace CNORXZ
return SFor<N,L,Xpr>(id, xpr, NoF {}); return SFor<N,L,Xpr>(id, xpr, NoF {});
} }
/************ /*==========+
* PFor * | PFor |
************/ +==========*/
template <SizeT L1, SizeT L2, class Xpr, class F> template <SizeT L1, SizeT L2, class Xpr, class F>
constexpr PFor<L1,L2,Xpr,F>::PFor(SizeT size, const IndexId<L1>& id1, const IndexId<L2>& id2, constexpr PFor<L1,L2,Xpr,F>::PFor(SizeT size, const IndexId<L1>& id1, const IndexId<L2>& id2,
@ -291,9 +291,9 @@ namespace CNORXZ
return mXpr.rootSteps(id); return mXpr.rootSteps(id);
} }
/************************* /*=======================+
* PFor (non-member) * | PFor (non-member) |
*************************/ +=======================*/
template <SizeT L1, SizeT L2, class Xpr, class F> template <SizeT L1, SizeT L2, class Xpr, class F>
constexpr decltype(auto) mkPFor(SizeT size, const IndexId<L1>& id1, const IndexId<L2>& id2, constexpr decltype(auto) mkPFor(SizeT size, const IndexId<L1>& id1, const IndexId<L2>& id2,
@ -309,9 +309,9 @@ namespace CNORXZ
return PFor<L1,L2,Xpr>(size, id1, id2, xpr, NoF {}); return PFor<L1,L2,Xpr>(size, id1, id2, xpr, NoF {});
} }
/************ /*==========+
* TFor * | TFor |
************/ +==========*/
template <SizeT L, class Xpr, class F> template <SizeT L, class Xpr, class F>
constexpr TFor<L,Xpr,F>::TFor(SizeT size, const IndexId<L>& id, const Xpr& xpr, F&& f) : constexpr TFor<L,Xpr,F>::TFor(SizeT size, const IndexId<L>& id, const Xpr& xpr, F&& f) :
@ -399,9 +399,9 @@ namespace CNORXZ
} }
/************ /*==========+
* EFor * | EFor |
************/ +==========*/
template <SizeT N, SizeT L, class Xpr, class F> template <SizeT N, SizeT L, class Xpr, class F>
constexpr EFor<N,L,Xpr,F>::EFor(const IndexId<L>& id, const Xpr& xpr, F&& f) : constexpr EFor<N,L,Xpr,F>::EFor(const IndexId<L>& id, const Xpr& xpr, F&& f) :

View file

@ -18,9 +18,9 @@
namespace CNORXZ namespace CNORXZ
{ {
/************ /*==========+
* SPos * | SPos |
************/ +==========*/
template <SizeT N> template <SizeT N>
constexpr SizeT SPos<N>::size() const constexpr SizeT SPos<N>::size() const
@ -116,9 +116,9 @@ namespace CNORXZ
return val(); return val();
} }
/************ /*==========+
* UPos * | UPos |
************/ +==========*/
constexpr UPos::UPos(SizeT ext) : mExt(ext) {} constexpr UPos::UPos(SizeT ext) : mExt(ext) {}
@ -183,9 +183,9 @@ namespace CNORXZ
return val(); return val();
} }
/************ /*==========+
* FPos * | FPos |
************/ +==========*/
inline FPos::FPos(SizeT ext, const SizeT* map) : mExt(ext), mMap(map) {} inline FPos::FPos(SizeT ext, const SizeT* map) : mExt(ext), mMap(map) {}
@ -234,9 +234,9 @@ namespace CNORXZ
return val(); return val();
} }
/************* /*===========+
* SFPos * | SFPos |
*************/ +===========*/
template <SizeT N, SizeT... Ms> template <SizeT N, SizeT... Ms>
Arr<SizeT,sizeof...(Ms)> SFPos<N,Ms...>::sMs = { Ms... }; Arr<SizeT,sizeof...(Ms)> SFPos<N,Ms...>::sMs = { Ms... };
@ -320,9 +320,9 @@ namespace CNORXZ
return val(); return val();
} }
/************ /*==========+
* MPos * | MPos |
************/ +==========*/
template <class BPosT, class NPosT> template <class BPosT, class NPosT>
constexpr MPos<BPosT,NPosT>::MPos() constexpr MPos<BPosT,NPosT>::MPos()
@ -411,9 +411,9 @@ namespace CNORXZ
return extend(a); return extend(a);
} }
/************ /*==========+
* DPos * | DPos |
************/ +==========*/
inline DPos::DPos(Uptr<VPosBase>&& a) : inline DPos::DPos(Uptr<VPosBase>&& a) :
ObjHandle<VPosBase>(std::forward<Uptr<VPosBase>>(a)) ObjHandle<VPosBase>(std::forward<Uptr<VPosBase>>(a))
@ -516,9 +516,9 @@ namespace CNORXZ
return val(); return val();
} }
/*************** /*=============+
* DPosRef * | DPosRef |
***************/ +=============*/
inline DPosRef::DPosRef(const VPosBase* p) : mP(p) {} inline DPosRef::DPosRef(const VPosBase* p) : mP(p) {}
@ -597,9 +597,9 @@ namespace CNORXZ
return val(); return val();
} }
/************ /*==========+
* EPos * | EPos |
************/ +==========*/
template <class BPosT, class... OPosTs> template <class BPosT, class... OPosTs>
constexpr EPos<BPosT,OPosTs...>::EPos(const BPosT& b, const OPosTs&... os) : constexpr EPos<BPosT,OPosTs...>::EPos(const BPosT& b, const OPosTs&... os) :
@ -689,9 +689,9 @@ namespace CNORXZ
return OEPosT(BPosT::next(), std::get<Is>(mP).next()...); return OEPosT(BPosT::next(), std::get<Is>(mP).next()...);
} }
/********************************* /*===============================+
* Traits and Helper-Classes * | Traits and Helper-Classes |
*********************************/ +===============================*/
template <class BPosT, class OPosT, SizeT N> template <class BPosT, class OPosT, SizeT N>
decltype(auto) MkEPos<BPosT,OPosT,N>::mk(const BPosT& a, const OPosT& b) decltype(auto) MkEPos<BPosT,OPosT,N>::mk(const BPosT& a, const OPosT& b)

View file

@ -306,9 +306,9 @@ namespace CNORXZ
constexpr decltype(auto) get() const; constexpr decltype(auto) get() const;
}; };
/********************************* /*===============================+
* Traits and Helper-Classes * | Traits and Helper-Classes |
*********************************/ +===============================*/
template <class T> template <class T>
struct is_pos_type { CXZ_CVAL_FALSE; }; struct is_pos_type { CXZ_CVAL_FALSE; };
@ -380,9 +380,9 @@ namespace CNORXZ
template <class BPosT, class OPosT, SizeT... Is> template <class BPosT, class OPosT, SizeT... Is>
decltype(auto) mkiEPos(const BPosT& a, const OPosT& b, std::index_sequence<Is...> is); decltype(auto) mkiEPos(const BPosT& a, const OPosT& b, std::index_sequence<Is...> is);
/************************************************** /*================================================+
* Traits and Helper-Classes: Specializations * | Traits and Helper-Classes: Specializations |
**************************************************/ +================================================*/
template <SizeT N> struct is_pos_type<SPos<N>> { CXZ_CVAL_TRUE; }; template <SizeT N> struct is_pos_type<SPos<N>> { CXZ_CVAL_TRUE; };
template <SizeT N> struct is_scalar_pos_type<SPos<N>> { CXZ_CVAL_TRUE; }; template <SizeT N> struct is_scalar_pos_type<SPos<N>> { CXZ_CVAL_TRUE; };

View file

@ -17,9 +17,9 @@
namespace CNORXZ namespace CNORXZ
{ {
/************ /*==========+
* VPos * | VPos |
************/ +==========*/
template <class PosT> template <class PosT>
VPos<PosT>::VPos(const PosT& a) : VPos<PosT>::VPos(const PosT& a) :
@ -77,9 +77,9 @@ namespace CNORXZ
return std::make_unique<VPos<OPosT>>( (*this)(UPos(a->vval())) ); return std::make_unique<VPos<OPosT>>( (*this)(UPos(a->vval())) );
} }
/****************** /*================+
* VPos<MPos> * | VPos<MPos> |
******************/ +================*/
template <class PosT1, class PosT2> template <class PosT1, class PosT2>
VPos<MPos<PosT1,PosT2>>::VPos(const VPos& a) : VPos<MPos<PosT1,PosT2>>::VPos(const VPos& a) :
@ -168,9 +168,9 @@ namespace CNORXZ
return std::make_unique<VPos<OPosT>>( (*this)(UPos(a->vval())) ); return std::make_unique<VPos<OPosT>>( (*this)(UPos(a->vval())) );
} }
/*************** /*=============+
* VPosRef * | VPosRef |
***************/ +=============*/
template <class PosT> template <class PosT>
VPosRef<PosT>::VPosRef(const PosT* c) : VPosRef<PosT>::VPosRef(const PosT* c) :
@ -228,9 +228,9 @@ namespace CNORXZ
return std::make_unique<VPos<OPosT>>( (*mC)(UPos(a->vval())) ); return std::make_unique<VPos<OPosT>>( (*mC)(UPos(a->vval())) );
} }
/********************* /*===================+
* VPosRef<MPos> * | VPosRef<MPos> |
*********************/ +===================*/
template <class PosT1, class PosT2> template <class PosT1, class PosT2>
VPosRef<MPos<PosT1,PosT2>>::VPosRef(const MPos<PosT1,PosT2>* c) : VPosRef<MPos<PosT1,PosT2>>::VPosRef(const MPos<PosT1,PosT2>* c) :
@ -298,9 +298,9 @@ namespace CNORXZ
return std::make_unique<VPos<OPosT>>( (*mC)(UPos(a->vval())) ); return std::make_unique<VPos<OPosT>>( (*mC)(UPos(a->vval())) );
} }
/******************* /*=================+
* PosFromVPos * | PosFromVPos |
*******************/ +=================*/
template <class PosT> template <class PosT>
inline decltype(auto) PosFromVPos<PosT>::make(const VPosBase* a) inline decltype(auto) PosFromVPos<PosT>::make(const VPosBase* a)

View file

@ -17,9 +17,9 @@
namespace CNORXZ namespace CNORXZ
{ {
/************ /*==========+
* VXpr * | VXpr |
************/ +==========*/
template <typename T, class Xpr> template <typename T, class Xpr>
VXpr<T,Xpr>::VXpr(const XprInterface<Xpr>& a) : VXpr<T,Xpr>::VXpr(const XprInterface<Xpr>& a) :
@ -50,9 +50,9 @@ namespace CNORXZ
return DPos(this->rootSteps(id)); return DPos(this->rootSteps(id));
} }
/************ /*==========+
* DXpr * | DXpr |
************/ +==========*/
template <typename T> template <typename T>
template <class Xpr> template <class Xpr>

View file

@ -15,9 +15,9 @@
namespace CNORXZ namespace CNORXZ
{ {
/************************* /*=======================+
* RangeFactoryBase * | RangeFactoryBase |
*************************/ +=======================*/
Map<SizeT,Map<Vector<Uuid>,RangePtr>> RangeFactoryBase::sCreated; Map<SizeT,Map<Vector<Uuid>,RangePtr>> RangeFactoryBase::sCreated;
@ -56,9 +56,9 @@ namespace CNORXZ
return rx; return rx;
} }
/****************** /*================+
* RangeBase * | RangeBase |
******************/ +================*/
RangeBase::RangeBase() RangeBase::RangeBase()
{ {
@ -101,9 +101,9 @@ namespace CNORXZ
return this->index(this->size()); return this->index(this->size());
} }
/**************************** /*==========================+
* Non-member functions * | Non-member functions |
****************************/ +==========================*/
RangePack::operator RangePtr() const RangePack::operator RangePtr() const
{ {

View file

@ -14,9 +14,9 @@
namespace CNORXZ namespace CNORXZ
{ {
/************************* /*=======================+
* YIndex (private) * | YIndex (private) |
*************************/ +=======================*/
inline DPack YIndex::mkIndices() const inline DPack YIndex::mkIndices() const
{ {
@ -130,9 +130,9 @@ namespace CNORXZ
} }
/*************** /*=============+
* YIndex * | YIndex |
***************/ +=============*/
YIndex::YIndex(const YIndex& i) : YIndex::YIndex(const YIndex& i) :
IndexInterface<YIndex,Vector<DType>>(i), IndexInterface<YIndex,Vector<DType>>(i),
@ -517,9 +517,9 @@ namespace CNORXZ
} }
/**************************** /*==========================+
* non-member functions * | non-member functions |
****************************/ +==========================*/
YIndex yindex(const DPack& pack) YIndex yindex(const DPack& pack)
{ {
@ -541,9 +541,9 @@ namespace CNORXZ
return std::make_shared<YIndex>(is); return std::make_shared<YIndex>(is);
} }
/********************** /*====================+
* YRangeFactory * | YRangeFactory |
**********************/ +====================*/
YRangeFactory::YRangeFactory(const Vector<RangePtr>& rvec) : YRangeFactory::YRangeFactory(const Vector<RangePtr>& rvec) :
mRVec(rvec) {} mRVec(rvec) {}
@ -570,9 +570,9 @@ namespace CNORXZ
} }
} }
/*************** /*=============+
* YRange * | YRange |
***************/ +=============*/
RangePtr YRange::sub(SizeT i) const RangePtr YRange::sub(SizeT i) const
{ {
@ -659,18 +659,18 @@ namespace CNORXZ
YRange::YRange(Vector<RangePtr>&& rvec) : mRVec(std::forward<Vector<RangePtr>>(rvec)) {} YRange::YRange(Vector<RangePtr>&& rvec) : mRVec(std::forward<Vector<RangePtr>>(rvec)) {}
/**************************** /*==========================+
* non-member functions * | non-member functions |
****************************/ +==========================*/
RangePtr yrange(const Vector<RangePtr>& rs) RangePtr yrange(const Vector<RangePtr>& rs)
{ {
return YRangeFactory(rs).create(); return YRangeFactory(rs).create();
} }
/******************* /*=================+
* Range Casts * | Range Casts |
*******************/ +=================*/
Sptr<YRange> RangeCast<YRange>::func(const RangePtr& r) Sptr<YRange> RangeCast<YRange>::func(const RangePtr& r)
{ {

View file

@ -22,9 +22,9 @@
namespace CNORXZ namespace CNORXZ
{ {
/************** /*============+
* save * | save |
**************/ +============*/
template <class Archive> template <class Archive>
void save(Archive& ar, const Uuid& id) void save(Archive& ar, const Uuid& id)
@ -61,9 +61,9 @@ namespace CNORXZ
ar(cereal::make_nvp("sub", mRVec)); ar(cereal::make_nvp("sub", mRVec));
} }
/************** /*============+
* load * | load |
**************/ +============*/
template <class Archive> template <class Archive>
void load(Archive& ar, Uuid& id) void load(Archive& ar, Uuid& id)