remove emacs bak file + fixes
This commit is contained in:
parent
b0063bb9e2
commit
9fec5d6354
2 changed files with 7 additions and 63 deletions
|
@ -1,62 +0,0 @@
|
||||||
|
|
||||||
#ifndef __ma_allocator__
|
|
||||||
#define __ma_allocator__
|
|
||||||
|
|
||||||
#include <cstdlib>
|
|
||||||
#include <new>
|
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
namespace MultiArrayHelper
|
|
||||||
{
|
|
||||||
|
|
||||||
template <typename T, size_t N>
|
|
||||||
struct Allocator
|
|
||||||
{
|
|
||||||
typedef T value_type;
|
|
||||||
static constexpr type_size = sizeof(value_type);
|
|
||||||
|
|
||||||
Allocator() = default;
|
|
||||||
|
|
||||||
template <typename U>
|
|
||||||
Allocator(const Allocator<U>& x) {}
|
|
||||||
|
|
||||||
T* allocate(size_t n)
|
|
||||||
{
|
|
||||||
//constexpr size_t NN = N*type_size;
|
|
||||||
const size_t nn = n*type_size;
|
|
||||||
if(n > static_cast<size_t>(-1-NN)) throw std::bad_alloc();
|
|
||||||
auto p = static_cast<char*>(std::malloc(nn + N));
|
|
||||||
if(not p) throw std::bad_alloc();
|
|
||||||
auto ip = static_cast<std::intptr_t>(p);
|
|
||||||
mDiff = N - (ip % N);
|
|
||||||
p += mDiff;
|
|
||||||
return static_cast<T*>(p);
|
|
||||||
}
|
|
||||||
|
|
||||||
void deacllocate(T* p, size_t n)
|
|
||||||
{
|
|
||||||
std::free(p-mDiff);
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
std::intptr_t mDiff;
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T, class U>
|
|
||||||
bool operator==(const Allocator<T>& a, const Allocator<T>& b)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class T, class U>
|
|
||||||
bool operator!=(const Allocator<T>& a, const Allocator<T>& b)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename T>
|
|
||||||
using vector = vector<T,Allocator>;
|
|
||||||
|
|
||||||
} // namespace MultiArrayHelper
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -234,6 +234,7 @@ namespace MultiArrayTools
|
||||||
{
|
{
|
||||||
//VCHECK(ma.data());
|
//VCHECK(ma.data());
|
||||||
mIndex(indices...);
|
mIndex(indices...);
|
||||||
|
mDataPtr = mOrigDataPtr + mIndex.pos();
|
||||||
//mOff = mIndex.pos();
|
//mOff = mIndex.pos();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -247,6 +248,7 @@ namespace MultiArrayTools
|
||||||
mMaPtr(maptr)
|
mMaPtr(maptr)
|
||||||
{
|
{
|
||||||
mIndex(indices...);
|
mIndex(indices...);
|
||||||
|
mDataPtr = mOrigDataPtr + mIndex.pos();
|
||||||
//mOff = mIndex.pos();
|
//mOff = mIndex.pos();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -257,6 +259,7 @@ namespace MultiArrayTools
|
||||||
mOrigDataPtr(data),
|
mOrigDataPtr(data),
|
||||||
mIndex( ind )
|
mIndex( ind )
|
||||||
{
|
{
|
||||||
|
mDataPtr = mOrigDataPtr + mIndex.pos();
|
||||||
//mOff = mIndex.pos();
|
//mOff = mIndex.pos();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -279,7 +282,8 @@ namespace MultiArrayTools
|
||||||
template <typename T, class... Ranges>
|
template <typename T, class... Ranges>
|
||||||
const T* ConstOperationRoot<T,Ranges...>::data() const
|
const T* ConstOperationRoot<T,Ranges...>::data() const
|
||||||
{
|
{
|
||||||
return mDataPtr + mIndex().pos();
|
auto i = mIndex;
|
||||||
|
return mDataPtr + i().pos();
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T, class... Ranges>
|
template <typename T, class... Ranges>
|
||||||
|
@ -392,6 +396,7 @@ namespace MultiArrayTools
|
||||||
mIndex( ma.begin() )
|
mIndex( ma.begin() )
|
||||||
{
|
{
|
||||||
mIndex(indices...);
|
mIndex(indices...);
|
||||||
|
mDataPtr = mOrigDataPtr + mIndex.pos();
|
||||||
//mOff = mIndex.pos();
|
//mOff = mIndex.pos();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -402,6 +407,7 @@ namespace MultiArrayTools
|
||||||
mOrigDataPtr(data),
|
mOrigDataPtr(data),
|
||||||
mIndex( ind )
|
mIndex( ind )
|
||||||
{
|
{
|
||||||
|
mDataPtr = mOrigDataPtr + mIndex.pos();
|
||||||
//mOff = mIndex.pos();
|
//mOff = mIndex.pos();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue