dev #3
40 changed files with 279 additions and 305 deletions
|
@ -2,10 +2,9 @@
|
|||
/**
|
||||
|
||||
@file include/array/aindex.cc.h
|
||||
@brief ...
|
||||
@brief Array index template implementations.
|
||||
|
||||
|
||||
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
|
||||
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
|
||||
Mail: chizeta@f3l.de
|
||||
|
||||
**/
|
||||
|
|
|
@ -2,10 +2,9 @@
|
|||
/**
|
||||
|
||||
@file include/array/aindex.h
|
||||
@brief ...
|
||||
@brief Array index declaration.
|
||||
|
||||
|
||||
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
|
||||
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
|
||||
Mail: chizeta@f3l.de
|
||||
|
||||
**/
|
||||
|
|
|
@ -2,10 +2,9 @@
|
|||
/**
|
||||
|
||||
@file include/array/array_base.cc.h
|
||||
@brief ...
|
||||
@brief Array base class template implementations.
|
||||
|
||||
|
||||
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
|
||||
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
|
||||
Mail: chizeta@f3l.de
|
||||
|
||||
**/
|
||||
|
|
|
@ -2,10 +2,9 @@
|
|||
/**
|
||||
|
||||
@file include/array/array_base.h
|
||||
@brief ...
|
||||
@brief Array base class declarations.
|
||||
|
||||
|
||||
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
|
||||
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
|
||||
Mail: chizeta@f3l.de
|
||||
|
||||
**/
|
||||
|
|
|
@ -2,10 +2,9 @@
|
|||
/**
|
||||
|
||||
@file include/array/marray.cc.h
|
||||
@brief ...
|
||||
@brief MArray implementations.
|
||||
|
||||
|
||||
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
|
||||
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
|
||||
Mail: chizeta@f3l.de
|
||||
|
||||
**/
|
||||
|
|
|
@ -2,10 +2,9 @@
|
|||
/**
|
||||
|
||||
@file include/array/marray.h
|
||||
@brief ...
|
||||
@brief MArray declarations.
|
||||
|
||||
|
||||
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
|
||||
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
|
||||
Mail: chizeta@f3l.de
|
||||
|
||||
**/
|
||||
|
|
|
@ -2,10 +2,9 @@
|
|||
/**
|
||||
|
||||
@file include/array/slice.cc.h
|
||||
@brief ...
|
||||
@brief Slice implementations.
|
||||
|
||||
|
||||
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
|
||||
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
|
||||
Mail: chizeta@f3l.de
|
||||
|
||||
**/
|
||||
|
|
|
@ -2,10 +2,9 @@
|
|||
/**
|
||||
|
||||
@file include/array/slice.h
|
||||
@brief ...
|
||||
@brief Slice declarations.
|
||||
|
||||
|
||||
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
|
||||
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
|
||||
Mail: chizeta@f3l.de
|
||||
|
||||
**/
|
||||
|
|
|
@ -84,7 +84,7 @@ namespace CNORXZ
|
|||
| library types |
|
||||
+===================*/
|
||||
|
||||
/***
|
||||
/*
|
||||
Naming Prefixes:
|
||||
D = Y = Dynamic
|
||||
V = X = Virtual
|
||||
|
@ -100,7 +100,7 @@ namespace CNORXZ
|
|||
A = (const) Array
|
||||
B = (mutable) Array
|
||||
F = Functional, Map,...
|
||||
***/
|
||||
*/
|
||||
|
||||
// default template parameter
|
||||
class None {};
|
||||
|
|
|
@ -2,10 +2,9 @@
|
|||
/**
|
||||
|
||||
@file include/memory/memcount.h
|
||||
@brief ...
|
||||
@brief MemCount declaration.
|
||||
|
||||
|
||||
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
|
||||
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
|
||||
Mail: chizeta@f3l.de
|
||||
|
||||
**/
|
||||
|
|
|
@ -2,10 +2,9 @@
|
|||
/**
|
||||
|
||||
@file include/memory/memory.cc.h
|
||||
@brief ...
|
||||
@brief Memory template implementations main header.
|
||||
|
||||
|
||||
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
|
||||
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
|
||||
Mail: chizeta@f3l.de
|
||||
|
||||
**/
|
||||
|
|
|
@ -2,10 +2,9 @@
|
|||
/**
|
||||
|
||||
@file include/memory/memory.h
|
||||
@brief ...
|
||||
@brief Memory main heade.
|
||||
|
||||
|
||||
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
|
||||
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
|
||||
Mail: chizeta@f3l.de
|
||||
|
||||
**/
|
||||
|
|
|
@ -16,9 +16,9 @@
|
|||
|
||||
namespace CNORXZ
|
||||
{
|
||||
/************************************
|
||||
* standard operatrions (unary) *
|
||||
************************************/
|
||||
/*==================================+
|
||||
| standard operatrions (unary) |
|
||||
+==================================*/
|
||||
|
||||
template <class Op>
|
||||
constexpr decltype(auto) minus(const COpInterface<Op>& op)
|
||||
|
@ -26,9 +26,9 @@ namespace CNORXZ
|
|||
return operation( [](const auto& a) { return -a; }, op.THIS() );
|
||||
}
|
||||
|
||||
/*************************************
|
||||
* standard operatrions (binary) *
|
||||
*************************************/
|
||||
/*===================================+
|
||||
| standard operatrions (binary) |
|
||||
+===================================*/
|
||||
|
||||
template <class Op1, class Op2>
|
||||
constexpr decltype(auto) plus(const COpInterface<Op1>& op1, const COpInterface<Op2>& op2)
|
||||
|
@ -65,9 +65,9 @@ namespace CNORXZ
|
|||
op1.THIS(), op2.THIS() );
|
||||
}
|
||||
|
||||
/*****************************************
|
||||
* operators for standard operations *
|
||||
*****************************************/
|
||||
/*=======================================+
|
||||
| operators for standard operations |
|
||||
+=======================================*/
|
||||
|
||||
template <class Op>
|
||||
constexpr decltype(auto) operator-(const COpInterface<Op>& op)
|
||||
|
|
|
@ -16,9 +16,9 @@
|
|||
|
||||
namespace CNORXZ
|
||||
{
|
||||
/***********************
|
||||
* PlusCC / PlusCX *
|
||||
***********************/
|
||||
/*=====================+
|
||||
| PlusCC / PlusCX |
|
||||
+=====================*/
|
||||
|
||||
inline decltype(auto)
|
||||
PlusCC<Double,Double,AVX::ND>::eval(const Consecutive<Double,AVX::ND>& a,
|
||||
|
@ -80,9 +80,9 @@ namespace CNORXZ
|
|||
return o;
|
||||
}
|
||||
|
||||
/*************************
|
||||
* MinusCC / MinusCX *
|
||||
*************************/
|
||||
/*=======================+
|
||||
| MinusCC / MinusCX |
|
||||
+=======================*/
|
||||
|
||||
inline decltype(auto)
|
||||
MinusCC<Double,Double,AVX::ND>::eval(const Consecutive<Double,AVX::ND>& a,
|
||||
|
@ -144,9 +144,9 @@ namespace CNORXZ
|
|||
return o;
|
||||
}
|
||||
|
||||
/***********************************
|
||||
* MultipliesCC / MultipliesCX *
|
||||
***********************************/
|
||||
/*=================================+
|
||||
| MultipliesCC / MultipliesCX |
|
||||
+=================================*/
|
||||
|
||||
inline decltype(auto)
|
||||
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)
|
||||
DividesCC<Double,Double,AVX::ND>::eval(const Consecutive<Double,AVX::ND>& a,
|
||||
|
|
|
@ -120,9 +120,9 @@ namespace CNORXZ
|
|||
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>
|
||||
constexpr decltype(auto)
|
||||
|
@ -156,9 +156,9 @@ namespace CNORXZ
|
|||
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>
|
||||
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 );
|
||||
}
|
||||
|
||||
/***********************************
|
||||
* basic operations: muliplies *
|
||||
***********************************/
|
||||
/*=================================+
|
||||
| basic operations: muliplies |
|
||||
+=================================*/
|
||||
|
||||
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)
|
||||
|
@ -224,9 +224,9 @@ namespace CNORXZ
|
|||
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>
|
||||
constexpr decltype(auto) DividesCC<T,U,N>::eval(const Consecutive<T,N>& a, const Consecutive<U,N>& b)
|
||||
|
|
|
@ -43,9 +43,9 @@ namespace CNORXZ
|
|||
template <typename T, SizeT 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>
|
||||
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>
|
||||
inline decltype(auto) vreg(T* d, const EPosT& pos);
|
||||
|
||||
/******************
|
||||
* ConsecFunc *
|
||||
******************/
|
||||
/*================+
|
||||
| ConsecFunc |
|
||||
+================*/
|
||||
|
||||
template <SizeT I, typename T>
|
||||
constexpr decltype(auto) consecGet(const T& a);
|
||||
|
@ -86,9 +86,9 @@ namespace CNORXZ
|
|||
template <SizeT N, class F, typename Dst, typename... 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>
|
||||
struct PlusCC
|
||||
|
@ -133,9 +133,9 @@ namespace CNORXZ
|
|||
constexpr Consecutive<T,N>& operator+=(Consecutive<T,N>& o, const U& a)
|
||||
{ return PlusCX<T,U,N>::aeval(o,a); }
|
||||
|
||||
/*******************************
|
||||
* basic operations: minus *
|
||||
*******************************/
|
||||
/*=============================+
|
||||
| basic operations: minus |
|
||||
+=============================*/
|
||||
|
||||
template <typename T, typename U, SizeT N>
|
||||
struct MinusCC
|
||||
|
@ -180,9 +180,9 @@ namespace CNORXZ
|
|||
constexpr Consecutive<T,N>& operator-=(Consecutive<T,N>& o, const U& a)
|
||||
{ return MinusCX<T,U,N>::eval(o,a); }
|
||||
|
||||
/***********************************
|
||||
* basic operations: muliplies *
|
||||
***********************************/
|
||||
/*=================================+
|
||||
| basic operations: muliplies |
|
||||
+=================================*/
|
||||
|
||||
template <typename T, typename U, SizeT N>
|
||||
struct MultipliesCC
|
||||
|
@ -227,9 +227,9 @@ namespace CNORXZ
|
|||
constexpr Consecutive<T,N>& operator*=(Consecutive<T,N>& o, const U& a)
|
||||
{ return MultipliesCX<T,U,N>::eval(o,a); }
|
||||
|
||||
/*********************************
|
||||
* basic operations: divides *
|
||||
*********************************/
|
||||
/*===============================+
|
||||
| basic operations: divides |
|
||||
+===============================*/
|
||||
|
||||
template <typename T, typename U, SizeT N>
|
||||
struct DividesCC
|
||||
|
|
|
@ -2,10 +2,9 @@
|
|||
/**
|
||||
|
||||
@file include/ranges/crange.cc.h
|
||||
@brief ...
|
||||
@brief CRange and CIndex template implementations.
|
||||
|
||||
|
||||
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
|
||||
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
|
||||
Mail: chizeta@f3l.de
|
||||
|
||||
**/
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
/**
|
||||
|
||||
@file include/ranges/dindex.cc.h
|
||||
@brief ...
|
||||
|
||||
@brief Dynamic index template implementations.
|
||||
|
||||
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
|
||||
Mail: chizeta@f3l.de
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
/**
|
||||
|
||||
@file include/ranges/dindex.h
|
||||
@brief DIndex declaration.
|
||||
@brief Dynamic index declaration.
|
||||
|
||||
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
|
||||
Mail: chizeta@f3l.de
|
||||
|
|
|
@ -2,10 +2,9 @@
|
|||
/**
|
||||
|
||||
@file include/ranges/eindex.cc.h
|
||||
@brief ...
|
||||
@brief Extension index implementations.
|
||||
|
||||
|
||||
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
|
||||
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
|
||||
Mail: chizeta@f3l.de
|
||||
|
||||
**/
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
/**
|
||||
|
||||
@file include/ranges/eindex.h
|
||||
@brief ...
|
||||
|
||||
@brief Extension index declaration.
|
||||
|
||||
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
|
||||
Mail: chizeta@f3l.de
|
||||
|
|
|
@ -2,10 +2,9 @@
|
|||
/**
|
||||
|
||||
@file include/ranges/index_base.cc.h
|
||||
@brief ...
|
||||
@brief Index base template implementation.
|
||||
|
||||
|
||||
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
|
||||
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
|
||||
Mail: chizeta@f3l.de
|
||||
|
||||
**/
|
||||
|
@ -17,9 +16,9 @@
|
|||
|
||||
namespace CNORXZ
|
||||
{
|
||||
/**********************
|
||||
* IndexInterface *
|
||||
**********************/
|
||||
/*====================+
|
||||
| IndexInterface |
|
||||
+====================*/
|
||||
|
||||
template <class I, typename MetaType>
|
||||
IndexInterface<I,MetaType>::IndexInterface()
|
||||
|
@ -113,9 +112,9 @@ namespace CNORXZ
|
|||
}
|
||||
|
||||
|
||||
/****************************
|
||||
* Non-member functions *
|
||||
****************************/
|
||||
/*==========================+
|
||||
| Non-member functions |
|
||||
+==========================*/
|
||||
|
||||
template <class I, typename MetaType>
|
||||
IndexPtr<I,MetaType>& operator++(const IndexPtr<I,MetaType>& i)
|
||||
|
|
|
@ -2,10 +2,9 @@
|
|||
/**
|
||||
|
||||
@file include/ranges/index_base.h
|
||||
@brief ...
|
||||
@brief Index base declaration.
|
||||
|
||||
|
||||
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
|
||||
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
|
||||
Mail: chizeta@f3l.de
|
||||
|
||||
**/
|
||||
|
|
|
@ -2,10 +2,9 @@
|
|||
/**
|
||||
|
||||
@file include/ranges/index_format.cc.h
|
||||
@brief ...
|
||||
@brief Index formats implementations.
|
||||
|
||||
|
||||
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
|
||||
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
|
||||
Mail: chizeta@f3l.de
|
||||
|
||||
**/
|
||||
|
@ -17,9 +16,9 @@
|
|||
|
||||
namespace CNORXZ
|
||||
{
|
||||
/***************
|
||||
* MFormat *
|
||||
***************/
|
||||
/*=============+
|
||||
| MFormat |
|
||||
+=============*/
|
||||
|
||||
template <SizeT N>
|
||||
constexpr MFormat<N>::MFormat(const Arr<UPos,N>& b) :
|
||||
|
@ -61,9 +60,9 @@ namespace CNORXZ
|
|||
}
|
||||
|
||||
|
||||
/****************
|
||||
* GMFormat *
|
||||
****************/
|
||||
/*==============+
|
||||
| GMFormat |
|
||||
+==============*/
|
||||
|
||||
template <class... PosT>
|
||||
constexpr GMFormat<PosT...>::GMFormat(const Tuple<PosT...>& b) :
|
||||
|
@ -115,9 +114,9 @@ namespace CNORXZ
|
|||
return GMFormat(std::move(std::make_tuple(ps...)));
|
||||
}
|
||||
|
||||
/***************
|
||||
* YFormat *
|
||||
***************/
|
||||
/*=============+
|
||||
| YFormat |
|
||||
+=============*/
|
||||
|
||||
template <class FormatT>
|
||||
YFormat::YFormat(const FormatT& f) : mB(f.size())
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
/**
|
||||
|
||||
@file include/ranges/index_mul.cc.h
|
||||
@brief ...
|
||||
|
||||
@brief Index multiplication template implementation.
|
||||
|
||||
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
|
||||
Mail: chizeta@f3l.de
|
||||
|
@ -18,9 +17,9 @@
|
|||
namespace CNORXZ
|
||||
{
|
||||
|
||||
/*********************
|
||||
* MIndexSptrMul *
|
||||
*********************/
|
||||
/*===================+
|
||||
| MIndexSptrMul |
|
||||
+===================*/
|
||||
|
||||
template <class BlockT, class... Indices, class I, SizeT... Is>
|
||||
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>
|
||||
inline decltype(auto) operator*(const IndexInterface<I1,Meta1>& a,
|
||||
|
@ -122,9 +121,9 @@ namespace CNORXZ
|
|||
return a.mul(b);
|
||||
}
|
||||
|
||||
/***************
|
||||
* iptrMul *
|
||||
***************/
|
||||
/*=============+
|
||||
| iptrMul |
|
||||
+=============*/
|
||||
|
||||
template <class I1, class I2>
|
||||
decltype(auto) iptrMul(const Sptr<I1>& a, const Sptr<I2>& b)
|
||||
|
|
|
@ -2,10 +2,9 @@
|
|||
/**
|
||||
|
||||
@file include/ranges/index_pack.cc.h
|
||||
@brief ...
|
||||
@brief Index pack template implementations.
|
||||
|
||||
|
||||
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
|
||||
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
|
||||
Mail: chizeta@f3l.de
|
||||
|
||||
**/
|
||||
|
@ -17,9 +16,9 @@
|
|||
|
||||
namespace CNORXZ
|
||||
{
|
||||
/*************
|
||||
* SPack *
|
||||
*************/
|
||||
/*===========+
|
||||
| SPack |
|
||||
+===========*/
|
||||
|
||||
template <class... Indices>
|
||||
constexpr SPack<Indices...>::SPack(const Sptr<Indices>&... is) :
|
||||
|
@ -96,9 +95,9 @@ namespace CNORXZ
|
|||
return lex();
|
||||
}
|
||||
|
||||
/**************************
|
||||
* SPack (non-member) *
|
||||
**************************/
|
||||
/*========================+
|
||||
| SPack (non-member) |
|
||||
+========================*/
|
||||
|
||||
template <class... Indices>
|
||||
constexpr decltype(auto) spack(const Indices&... inds)
|
||||
|
@ -114,9 +113,9 @@ namespace CNORXZ
|
|||
return SPack<Indices...>( inds... );
|
||||
}
|
||||
|
||||
/*************
|
||||
* DPack *
|
||||
*************/
|
||||
/*===========+
|
||||
| DPack |
|
||||
+===========*/
|
||||
|
||||
template <class... Indices>
|
||||
DPack::DPack(const SPack<Indices...>& p) :
|
||||
|
@ -127,9 +126,9 @@ namespace CNORXZ
|
|||
{}
|
||||
|
||||
|
||||
/**************************
|
||||
* DPack (non-member) *
|
||||
**************************/
|
||||
/*========================+
|
||||
| DPack (non-member) |
|
||||
+========================*/
|
||||
|
||||
template <class... Indices>
|
||||
DPack dpack(const Indices&... inds)
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
/**
|
||||
|
||||
@file include/ranges/lindex.cc.h
|
||||
@brief ...
|
||||
|
||||
@brief LIndex implementations.
|
||||
|
||||
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
|
||||
Mail: chizeta@f3l.de
|
||||
|
|
|
@ -2,10 +2,9 @@
|
|||
/**
|
||||
|
||||
@file include/ranges/range_base.cc.h
|
||||
@brief ...
|
||||
@brief RangeBase template implementations.
|
||||
|
||||
|
||||
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
|
||||
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
|
||||
Mail: chizeta@f3l.de
|
||||
|
||||
**/
|
||||
|
|
|
@ -2,10 +2,9 @@
|
|||
/**
|
||||
|
||||
@file include/ranges/ranges.cc.h
|
||||
@brief ...
|
||||
@brief Ranges template implementation main header
|
||||
|
||||
|
||||
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
|
||||
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
|
||||
Mail: chizeta@f3l.de
|
||||
|
||||
**/
|
||||
|
|
|
@ -2,10 +2,9 @@
|
|||
/**
|
||||
|
||||
@file include/ranges/srange.cc.h
|
||||
@brief ...
|
||||
@brief SRange, SRangeFactory and SIndex implementation.
|
||||
|
||||
|
||||
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
|
||||
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
|
||||
Mail: chizeta@f3l.de
|
||||
|
||||
**/
|
||||
|
@ -18,9 +17,9 @@
|
|||
|
||||
namespace CNORXZ
|
||||
{
|
||||
/**************
|
||||
* SIndex *
|
||||
**************/
|
||||
/*============+
|
||||
| SIndex |
|
||||
+============*/
|
||||
|
||||
template <typename MetaT, SizeT S>
|
||||
SIndex<MetaT,S>::SIndex(const RangePtr& range, SizeT pos) :
|
||||
|
@ -213,9 +212,9 @@ namespace CNORXZ
|
|||
}
|
||||
|
||||
|
||||
/*********************
|
||||
* SRangeFactory *
|
||||
*********************/
|
||||
/*===================+
|
||||
| SRangeFactory |
|
||||
+===================*/
|
||||
|
||||
template <typename MetaType, SizeT S>
|
||||
SRangeFactory<MetaType,S>::SRangeFactory(const Arr<MetaType,S>& space) :
|
||||
|
@ -248,9 +247,9 @@ namespace CNORXZ
|
|||
}
|
||||
}
|
||||
|
||||
/**************
|
||||
* SRange *
|
||||
**************/
|
||||
/*============+
|
||||
| SRange |
|
||||
+============*/
|
||||
|
||||
template <typename MetaType, SizeT S>
|
||||
SRange<MetaType,S>::SRange(const Arr<MetaType,S>& space) :
|
||||
|
@ -338,9 +337,9 @@ namespace CNORXZ
|
|||
return Vector<Uuid> { this->id() };
|
||||
}
|
||||
|
||||
/*******************
|
||||
* Range Casts *
|
||||
*******************/
|
||||
/*=================+
|
||||
| Range Casts |
|
||||
+=================*/
|
||||
|
||||
template <typename MetaType, SizeT S>
|
||||
Sptr<SRange<MetaType,S>> RangeCast<SRange<MetaType,S>>::func(const RangePtr& r)
|
||||
|
|
|
@ -2,10 +2,9 @@
|
|||
/**
|
||||
|
||||
@file include/ranges/urange.cc.h
|
||||
@brief ...
|
||||
@brief URange, URangeFactory and UIndex implementations.
|
||||
|
||||
|
||||
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
|
||||
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
|
||||
Mail: chizeta@f3l.de
|
||||
|
||||
**/
|
||||
|
@ -25,9 +24,9 @@
|
|||
|
||||
namespace CNORXZ
|
||||
{
|
||||
/*****************
|
||||
* UIndex *
|
||||
*****************/
|
||||
/*===============+
|
||||
| UIndex |
|
||||
+===============*/
|
||||
|
||||
template <typename MetaT>
|
||||
UIndex<MetaT>::UIndex(const RangePtr& range, SizeT pos) :
|
||||
|
@ -222,9 +221,9 @@ namespace CNORXZ
|
|||
return iptrMul(a, b);
|
||||
}
|
||||
|
||||
/**********************
|
||||
* URangeFactory *
|
||||
**********************/
|
||||
/*====================+
|
||||
| URangeFactory |
|
||||
+====================*/
|
||||
|
||||
template <typename MetaT>
|
||||
URangeFactory<MetaT>::URangeFactory(const Vector<MetaT>& space) :
|
||||
|
@ -257,9 +256,9 @@ namespace CNORXZ
|
|||
}
|
||||
}
|
||||
|
||||
/***************
|
||||
* URange *
|
||||
***************/
|
||||
/*=============+
|
||||
| URange |
|
||||
+=============*/
|
||||
|
||||
template <typename MetaT>
|
||||
URange<MetaT>::URange(const Vector<MetaT>& space) :
|
||||
|
@ -350,9 +349,9 @@ namespace CNORXZ
|
|||
return Vector<Uuid> { this->id() };
|
||||
}
|
||||
|
||||
/*******************
|
||||
* Range Casts *
|
||||
*******************/
|
||||
/*=================+
|
||||
| Range Casts |
|
||||
+=================*/
|
||||
|
||||
template <typename MetaT>
|
||||
struct URangeCast
|
||||
|
|
|
@ -2,10 +2,9 @@
|
|||
/**
|
||||
|
||||
@file include/ranges/xindex.cc.h
|
||||
@brief ...
|
||||
@brief XIndexBase and XIndex template implementations.
|
||||
|
||||
|
||||
Copyright (c) 2022 Christian Zimmermann. All rights reserved.
|
||||
Copyright (c) 2024 Christian Zimmermann. All rights reserved.
|
||||
Mail: chizeta@f3l.de
|
||||
|
||||
**/
|
||||
|
@ -18,9 +17,9 @@
|
|||
namespace CNORXZ
|
||||
{
|
||||
|
||||
/**************
|
||||
* XIndex *
|
||||
**************/
|
||||
/*============+
|
||||
| XIndex |
|
||||
+============*/
|
||||
|
||||
template <class Index, typename Meta>
|
||||
XIndex<Index,Meta>::XIndex(const IndexPtr<Index,Meta>& i) :
|
||||
|
|
|
@ -19,9 +19,9 @@
|
|||
namespace CNORXZ
|
||||
{
|
||||
|
||||
/***********
|
||||
* For *
|
||||
***********/
|
||||
/*=========+
|
||||
| For |
|
||||
+=========*/
|
||||
|
||||
template <SizeT L, class Xpr, class 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);
|
||||
}
|
||||
|
||||
/************************
|
||||
* For (non-member) *
|
||||
************************/
|
||||
/*======================+
|
||||
| For (non-member) |
|
||||
+======================*/
|
||||
|
||||
template <SizeT L, class Xpr, class 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 {});
|
||||
}
|
||||
|
||||
/************
|
||||
* SFor *
|
||||
************/
|
||||
/*==========+
|
||||
| SFor |
|
||||
+==========*/
|
||||
|
||||
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) :
|
||||
|
@ -203,9 +203,9 @@ namespace CNORXZ
|
|||
return;
|
||||
}
|
||||
|
||||
/*************************
|
||||
* SFor (non-member) *
|
||||
*************************/
|
||||
/*=======================+
|
||||
| SFor (non-member) |
|
||||
+=======================*/
|
||||
|
||||
template <SizeT N, SizeT L, class Xpr, class 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 {});
|
||||
}
|
||||
|
||||
/************
|
||||
* PFor *
|
||||
************/
|
||||
/*==========+
|
||||
| PFor |
|
||||
+==========*/
|
||||
|
||||
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,
|
||||
|
@ -291,9 +291,9 @@ namespace CNORXZ
|
|||
return mXpr.rootSteps(id);
|
||||
}
|
||||
|
||||
/*************************
|
||||
* PFor (non-member) *
|
||||
*************************/
|
||||
/*=======================+
|
||||
| PFor (non-member) |
|
||||
+=======================*/
|
||||
|
||||
template <SizeT L1, SizeT L2, class Xpr, class F>
|
||||
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 {});
|
||||
}
|
||||
|
||||
/************
|
||||
* TFor *
|
||||
************/
|
||||
/*==========+
|
||||
| TFor |
|
||||
+==========*/
|
||||
|
||||
template <SizeT L, class Xpr, class 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>
|
||||
constexpr EFor<N,L,Xpr,F>::EFor(const IndexId<L>& id, const Xpr& xpr, F&& f) :
|
||||
|
|
|
@ -18,9 +18,9 @@
|
|||
namespace CNORXZ
|
||||
{
|
||||
|
||||
/************
|
||||
* SPos *
|
||||
************/
|
||||
/*==========+
|
||||
| SPos |
|
||||
+==========*/
|
||||
|
||||
template <SizeT N>
|
||||
constexpr SizeT SPos<N>::size() const
|
||||
|
@ -116,9 +116,9 @@ namespace CNORXZ
|
|||
return val();
|
||||
}
|
||||
|
||||
/************
|
||||
* UPos *
|
||||
************/
|
||||
/*==========+
|
||||
| UPos |
|
||||
+==========*/
|
||||
|
||||
constexpr UPos::UPos(SizeT ext) : mExt(ext) {}
|
||||
|
||||
|
@ -183,9 +183,9 @@ namespace CNORXZ
|
|||
return val();
|
||||
}
|
||||
|
||||
/************
|
||||
* FPos *
|
||||
************/
|
||||
/*==========+
|
||||
| FPos |
|
||||
+==========*/
|
||||
|
||||
inline FPos::FPos(SizeT ext, const SizeT* map) : mExt(ext), mMap(map) {}
|
||||
|
||||
|
@ -234,9 +234,9 @@ namespace CNORXZ
|
|||
return val();
|
||||
}
|
||||
|
||||
/*************
|
||||
* SFPos *
|
||||
*************/
|
||||
/*===========+
|
||||
| SFPos |
|
||||
+===========*/
|
||||
|
||||
template <SizeT N, SizeT... Ms>
|
||||
Arr<SizeT,sizeof...(Ms)> SFPos<N,Ms...>::sMs = { Ms... };
|
||||
|
@ -320,9 +320,9 @@ namespace CNORXZ
|
|||
return val();
|
||||
}
|
||||
|
||||
/************
|
||||
* MPos *
|
||||
************/
|
||||
/*==========+
|
||||
| MPos |
|
||||
+==========*/
|
||||
|
||||
template <class BPosT, class NPosT>
|
||||
constexpr MPos<BPosT,NPosT>::MPos()
|
||||
|
@ -411,9 +411,9 @@ namespace CNORXZ
|
|||
return extend(a);
|
||||
}
|
||||
|
||||
/************
|
||||
* DPos *
|
||||
************/
|
||||
/*==========+
|
||||
| DPos |
|
||||
+==========*/
|
||||
|
||||
inline DPos::DPos(Uptr<VPosBase>&& a) :
|
||||
ObjHandle<VPosBase>(std::forward<Uptr<VPosBase>>(a))
|
||||
|
@ -516,9 +516,9 @@ namespace CNORXZ
|
|||
return val();
|
||||
}
|
||||
|
||||
/***************
|
||||
* DPosRef *
|
||||
***************/
|
||||
/*=============+
|
||||
| DPosRef |
|
||||
+=============*/
|
||||
|
||||
inline DPosRef::DPosRef(const VPosBase* p) : mP(p) {}
|
||||
|
||||
|
@ -597,9 +597,9 @@ namespace CNORXZ
|
|||
return val();
|
||||
}
|
||||
|
||||
/************
|
||||
* EPos *
|
||||
************/
|
||||
/*==========+
|
||||
| EPos |
|
||||
+==========*/
|
||||
|
||||
template <class BPosT, class... OPosTs>
|
||||
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()...);
|
||||
}
|
||||
|
||||
/*********************************
|
||||
* Traits and Helper-Classes *
|
||||
*********************************/
|
||||
/*===============================+
|
||||
| Traits and Helper-Classes |
|
||||
+===============================*/
|
||||
|
||||
template <class BPosT, class OPosT, SizeT N>
|
||||
decltype(auto) MkEPos<BPosT,OPosT,N>::mk(const BPosT& a, const OPosT& b)
|
||||
|
|
|
@ -306,9 +306,9 @@ namespace CNORXZ
|
|||
constexpr decltype(auto) get() const;
|
||||
};
|
||||
|
||||
/*********************************
|
||||
* Traits and Helper-Classes *
|
||||
*********************************/
|
||||
/*===============================+
|
||||
| Traits and Helper-Classes |
|
||||
+===============================*/
|
||||
|
||||
template <class T>
|
||||
struct is_pos_type { CXZ_CVAL_FALSE; };
|
||||
|
@ -380,9 +380,9 @@ namespace CNORXZ
|
|||
template <class BPosT, class OPosT, SizeT... 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_scalar_pos_type<SPos<N>> { CXZ_CVAL_TRUE; };
|
||||
|
|
|
@ -17,9 +17,9 @@
|
|||
|
||||
namespace CNORXZ
|
||||
{
|
||||
/************
|
||||
* VPos *
|
||||
************/
|
||||
/*==========+
|
||||
| VPos |
|
||||
+==========*/
|
||||
|
||||
template <class PosT>
|
||||
VPos<PosT>::VPos(const PosT& a) :
|
||||
|
@ -77,9 +77,9 @@ namespace CNORXZ
|
|||
return std::make_unique<VPos<OPosT>>( (*this)(UPos(a->vval())) );
|
||||
}
|
||||
|
||||
/******************
|
||||
* VPos<MPos> *
|
||||
******************/
|
||||
/*================+
|
||||
| VPos<MPos> |
|
||||
+================*/
|
||||
|
||||
template <class PosT1, class PosT2>
|
||||
VPos<MPos<PosT1,PosT2>>::VPos(const VPos& a) :
|
||||
|
@ -168,9 +168,9 @@ namespace CNORXZ
|
|||
return std::make_unique<VPos<OPosT>>( (*this)(UPos(a->vval())) );
|
||||
}
|
||||
|
||||
/***************
|
||||
* VPosRef *
|
||||
***************/
|
||||
/*=============+
|
||||
| VPosRef |
|
||||
+=============*/
|
||||
|
||||
template <class PosT>
|
||||
VPosRef<PosT>::VPosRef(const PosT* c) :
|
||||
|
@ -228,9 +228,9 @@ namespace CNORXZ
|
|||
return std::make_unique<VPos<OPosT>>( (*mC)(UPos(a->vval())) );
|
||||
}
|
||||
|
||||
/*********************
|
||||
* VPosRef<MPos> *
|
||||
*********************/
|
||||
/*===================+
|
||||
| VPosRef<MPos> |
|
||||
+===================*/
|
||||
|
||||
template <class PosT1, class PosT2>
|
||||
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())) );
|
||||
}
|
||||
|
||||
/*******************
|
||||
* PosFromVPos *
|
||||
*******************/
|
||||
/*=================+
|
||||
| PosFromVPos |
|
||||
+=================*/
|
||||
|
||||
template <class PosT>
|
||||
inline decltype(auto) PosFromVPos<PosT>::make(const VPosBase* a)
|
||||
|
|
|
@ -17,9 +17,9 @@
|
|||
namespace CNORXZ
|
||||
{
|
||||
|
||||
/************
|
||||
* VXpr *
|
||||
************/
|
||||
/*==========+
|
||||
| VXpr |
|
||||
+==========*/
|
||||
|
||||
template <typename T, class Xpr>
|
||||
VXpr<T,Xpr>::VXpr(const XprInterface<Xpr>& a) :
|
||||
|
@ -50,9 +50,9 @@ namespace CNORXZ
|
|||
return DPos(this->rootSteps(id));
|
||||
}
|
||||
|
||||
/************
|
||||
* DXpr *
|
||||
************/
|
||||
/*==========+
|
||||
| DXpr |
|
||||
+==========*/
|
||||
|
||||
template <typename T>
|
||||
template <class Xpr>
|
||||
|
|
|
@ -15,9 +15,9 @@
|
|||
namespace CNORXZ
|
||||
{
|
||||
|
||||
/*************************
|
||||
* RangeFactoryBase *
|
||||
*************************/
|
||||
/*=======================+
|
||||
| RangeFactoryBase |
|
||||
+=======================*/
|
||||
|
||||
Map<SizeT,Map<Vector<Uuid>,RangePtr>> RangeFactoryBase::sCreated;
|
||||
|
||||
|
@ -56,9 +56,9 @@ namespace CNORXZ
|
|||
return rx;
|
||||
}
|
||||
|
||||
/******************
|
||||
* RangeBase *
|
||||
******************/
|
||||
/*================+
|
||||
| RangeBase |
|
||||
+================*/
|
||||
|
||||
RangeBase::RangeBase()
|
||||
{
|
||||
|
@ -101,9 +101,9 @@ namespace CNORXZ
|
|||
return this->index(this->size());
|
||||
}
|
||||
|
||||
/****************************
|
||||
* Non-member functions *
|
||||
****************************/
|
||||
/*==========================+
|
||||
| Non-member functions |
|
||||
+==========================*/
|
||||
|
||||
RangePack::operator RangePtr() const
|
||||
{
|
||||
|
|
|
@ -14,9 +14,9 @@
|
|||
|
||||
namespace CNORXZ
|
||||
{
|
||||
/*************************
|
||||
* YIndex (private) *
|
||||
*************************/
|
||||
/*=======================+
|
||||
| YIndex (private) |
|
||||
+=======================*/
|
||||
|
||||
inline DPack YIndex::mkIndices() const
|
||||
{
|
||||
|
@ -130,9 +130,9 @@ namespace CNORXZ
|
|||
}
|
||||
|
||||
|
||||
/***************
|
||||
* YIndex *
|
||||
***************/
|
||||
/*=============+
|
||||
| YIndex |
|
||||
+=============*/
|
||||
|
||||
YIndex::YIndex(const YIndex& i) :
|
||||
IndexInterface<YIndex,Vector<DType>>(i),
|
||||
|
@ -517,9 +517,9 @@ namespace CNORXZ
|
|||
}
|
||||
|
||||
|
||||
/****************************
|
||||
* non-member functions *
|
||||
****************************/
|
||||
/*==========================+
|
||||
| non-member functions |
|
||||
+==========================*/
|
||||
|
||||
YIndex yindex(const DPack& pack)
|
||||
{
|
||||
|
@ -541,9 +541,9 @@ namespace CNORXZ
|
|||
return std::make_shared<YIndex>(is);
|
||||
}
|
||||
|
||||
/**********************
|
||||
* YRangeFactory *
|
||||
**********************/
|
||||
/*====================+
|
||||
| YRangeFactory |
|
||||
+====================*/
|
||||
|
||||
YRangeFactory::YRangeFactory(const Vector<RangePtr>& rvec) :
|
||||
mRVec(rvec) {}
|
||||
|
@ -570,9 +570,9 @@ namespace CNORXZ
|
|||
}
|
||||
}
|
||||
|
||||
/***************
|
||||
* YRange *
|
||||
***************/
|
||||
/*=============+
|
||||
| YRange |
|
||||
+=============*/
|
||||
|
||||
RangePtr YRange::sub(SizeT i) const
|
||||
{
|
||||
|
@ -659,18 +659,18 @@ namespace CNORXZ
|
|||
|
||||
YRange::YRange(Vector<RangePtr>&& rvec) : mRVec(std::forward<Vector<RangePtr>>(rvec)) {}
|
||||
|
||||
/****************************
|
||||
* non-member functions *
|
||||
****************************/
|
||||
/*==========================+
|
||||
| non-member functions |
|
||||
+==========================*/
|
||||
|
||||
RangePtr yrange(const Vector<RangePtr>& rs)
|
||||
{
|
||||
return YRangeFactory(rs).create();
|
||||
}
|
||||
|
||||
/*******************
|
||||
* Range Casts *
|
||||
*******************/
|
||||
/*=================+
|
||||
| Range Casts |
|
||||
+=================*/
|
||||
|
||||
Sptr<YRange> RangeCast<YRange>::func(const RangePtr& r)
|
||||
{
|
||||
|
|
|
@ -22,9 +22,9 @@
|
|||
|
||||
namespace CNORXZ
|
||||
{
|
||||
/**************
|
||||
* save *
|
||||
**************/
|
||||
/*============+
|
||||
| save |
|
||||
+============*/
|
||||
|
||||
template <class Archive>
|
||||
void save(Archive& ar, const Uuid& id)
|
||||
|
@ -61,9 +61,9 @@ namespace CNORXZ
|
|||
ar(cereal::make_nvp("sub", mRVec));
|
||||
}
|
||||
|
||||
/**************
|
||||
* load *
|
||||
**************/
|
||||
/*============+
|
||||
| load |
|
||||
+============*/
|
||||
|
||||
template <class Archive>
|
||||
void load(Archive& ar, Uuid& id)
|
||||
|
|
Loading…
Reference in a new issue