name mapping suggestions + static cc for implementation
This commit is contained in:
parent
70c850be2f
commit
cf1850923f
2 changed files with 75 additions and 0 deletions
68
src/include/statics/static_for.h
Normal file
68
src/include/statics/static_for.h
Normal file
|
@ -0,0 +1,68 @@
|
|||
|
||||
#ifndef __static_for_h__
|
||||
#define __static_for_h__
|
||||
|
||||
#include <cstdlib>
|
||||
|
||||
namespace MultiArrayTools
|
||||
{
|
||||
|
||||
template <size_t BEG, size_t END>
|
||||
struct sfor
|
||||
{
|
||||
template <typename F>
|
||||
static void execs(const F& f)
|
||||
{
|
||||
if(BEG < END){
|
||||
f(std::integral_constant<size_t, BEG>{});
|
||||
sfor<BEG+1,END>::execs(f);
|
||||
}
|
||||
}
|
||||
|
||||
template <typename F>
|
||||
static void execsr(const F& f)
|
||||
{
|
||||
if(BEG < END){
|
||||
f(std::integral_constant<size_t, END-1>{});
|
||||
sfor<BEG,END-1>::execsr(f);
|
||||
}
|
||||
}
|
||||
|
||||
template <typename F>
|
||||
static void exec(const F& f)
|
||||
{
|
||||
f(std::integral_constant<size_t, BEG>{});
|
||||
sfor<BEG+1,END>::exec(f);
|
||||
}
|
||||
|
||||
template <typename F>
|
||||
static void execr(const F& f)
|
||||
{
|
||||
f(std::integral_constant<size_t, END-1>{});
|
||||
sfor<BEG,END-1>::execr(f);
|
||||
}
|
||||
};
|
||||
|
||||
template <size_t N>
|
||||
struct sfor<N,N>
|
||||
{
|
||||
template <typename F>
|
||||
static void execs(const F& f) {}
|
||||
|
||||
template <typename F>
|
||||
static void execsr(const F& f) {}
|
||||
|
||||
template <typename F>
|
||||
static void exec(const F& f) {}
|
||||
|
||||
template <typename F>
|
||||
static void execr(const F& f) {}
|
||||
};
|
||||
}
|
||||
|
||||
#define MA_SSFOR(i,beg,end,expr) MultiArrayTools::sfor<beg,end>::execs([&](auto i){ expr })
|
||||
#define MA_SSRFOR(i,end,beg,expr) MultiArrayTools::sfor<beg,end>::execsr([&](auto i){ expr })
|
||||
#define MA_SFOR(i,beg,end,expr) MultiArrayTools::sfor<beg,end>::exec([&](auto i){ expr })
|
||||
#define MA_SRFOR(i,end,beg,expr) MultiArrayTools::sfor<beg,end>::execr([&](auto i){ expr })
|
||||
|
||||
#endif
|
7
src/name_map.txt
Normal file
7
src/name_map.txt
Normal file
|
@ -0,0 +1,7 @@
|
|||
:: Rename MultiArray library in CNORXZ (Containers with Native Operation Routines by XZ (chizeta))
|
||||
MultiArrayTools -> CNORXZ
|
||||
MultiArray -> Array
|
||||
multi_array_*.{cc,h} -> cxz_*.{cc,h}
|
||||
*ma* -> *cxz*
|
||||
libmultiarray -> libcnorxz
|
||||
...!!!
|
Loading…
Reference in a new issue