dev #3
40 changed files with 279 additions and 305 deletions
|
@ -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
|
||||||
|
|
||||||
**/
|
**/
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
**/
|
**/
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
**/
|
**/
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
**/
|
**/
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
**/
|
**/
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
**/
|
**/
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
**/
|
**/
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
**/
|
**/
|
||||||
|
|
|
@ -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 {};
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
**/
|
**/
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
**/
|
**/
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
**/
|
**/
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
**/
|
**/
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
**/
|
**/
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
**/
|
**/
|
||||||
|
|
|
@ -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())
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
**/
|
**/
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
**/
|
**/
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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) :
|
||||||
|
|
|
@ -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) :
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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; };
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Reference in a new issue