index info compiles...
This commit is contained in:
parent
9e3e866b06
commit
c349ff7bd0
4 changed files with 73 additions and 5 deletions
|
@ -22,7 +22,7 @@ endif()
|
||||||
|
|
||||||
include_directories(src)
|
include_directories(src)
|
||||||
|
|
||||||
set(INDEX_CC_FILES "${INDEX_CC_FILES}" "src/ranges/range_base.cc")
|
set(INDEX_CC_FILES "${INDEX_CC_FILES}" "src/ranges/range_base.cc" "src/ranges/index_info.cc")
|
||||||
set(MA_CC_FILES "${MA_CC_FILES}" "${INDEX_CC_FILES}" "src/operation_utils.cc")
|
set(MA_CC_FILES "${MA_CC_FILES}" "${INDEX_CC_FILES}" "src/operation_utils.cc")
|
||||||
|
|
||||||
add_executable(iutest src/ranges/tests/index_unit_test.cc ${INDEX_CC_FILES})
|
add_executable(iutest src/ranges/tests/index_unit_test.cc ${INDEX_CC_FILES})
|
||||||
|
|
|
@ -1,9 +1,41 @@
|
||||||
|
|
||||||
#include "index_info.h"
|
#include "index_info.h"
|
||||||
|
#include "range_base.h"
|
||||||
|
|
||||||
namespace MultiArrayTools
|
namespace MultiArrayTools
|
||||||
{
|
{
|
||||||
|
|
||||||
|
bool IndexInfo::operator==(const IndexInfo& in) const
|
||||||
|
{
|
||||||
|
return mPtrNum == in.mPtrNum;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool IndexInfo::operator!=(const IndexInfo& in) const
|
||||||
|
{
|
||||||
|
return mPtrNum != in.mPtrNum;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool IndexInfo::operator<=(const IndexInfo& in) const
|
||||||
|
{
|
||||||
|
return mPtrNum <= in.mPtrNum;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool IndexInfo::operator<(const IndexInfo& in) const
|
||||||
|
{
|
||||||
|
return mPtrNum < in.mPtrNum;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool IndexInfo::operator>(const IndexInfo& in) const
|
||||||
|
{
|
||||||
|
return mPtrNum > in.mPtrNum;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool IndexInfo::operator>=(const IndexInfo& in) const
|
||||||
|
{
|
||||||
|
return mPtrNum >= in.mPtrNum;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
const IndexInfo* IndexInfo::getPtr(size_t inum) const
|
const IndexInfo* IndexInfo::getPtr(size_t inum) const
|
||||||
{
|
{
|
||||||
return &mNext[inum];
|
return &mNext[inum];
|
||||||
|
@ -18,10 +50,15 @@ namespace MultiArrayTools
|
||||||
{
|
{
|
||||||
return mDim;
|
return mDim;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t IndexInfo::max() const
|
||||||
|
{
|
||||||
|
return mMax;
|
||||||
|
}
|
||||||
|
|
||||||
size_t IndexInfo::getStepSize(size_t inum) const
|
size_t IndexInfo::getStepSize(size_t inum) const
|
||||||
{
|
{
|
||||||
return mNext[inum]->getStepSzize();
|
return mNext[inum].getStepSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t IndexInfo::getStepSize() const
|
size_t IndexInfo::getStepSize() const
|
||||||
|
@ -29,5 +66,9 @@ namespace MultiArrayTools
|
||||||
return mStepSize;
|
return mStepSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
IndexType IndexInfo::type() const
|
||||||
|
{
|
||||||
|
return mType;
|
||||||
|
}
|
||||||
|
|
||||||
} // end namespace MultiArrayTools
|
} // end namespace MultiArrayTools
|
||||||
|
|
|
@ -4,7 +4,11 @@
|
||||||
#define __index_info_h__
|
#define __index_info_h__
|
||||||
|
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
|
#include <cstdint>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include <memory>
|
||||||
|
#include "vindex_base.h"
|
||||||
|
#include "index_type.h"
|
||||||
|
|
||||||
namespace MultiArrayTools
|
namespace MultiArrayTools
|
||||||
{
|
{
|
||||||
|
@ -13,29 +17,51 @@ namespace MultiArrayTools
|
||||||
class IndexInfo
|
class IndexInfo
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
IndexInfo() = delete;
|
|
||||||
|
|
||||||
|
IndexInfo(IndexInfo&& in) = default;
|
||||||
|
IndexInfo& operator=(IndexInfo&& in) = default;
|
||||||
|
IndexInfo(const IndexInfo& in) = default;
|
||||||
|
IndexInfo& operator=(const IndexInfo& in) = default;
|
||||||
|
|
||||||
|
|
||||||
template <class IndexClass>
|
template <class IndexClass>
|
||||||
IndexInfo(const IndexClass& ind, size_t stepSize = 1);
|
IndexInfo(const IndexClass& ind, size_t stepSize = 1);
|
||||||
|
|
||||||
|
bool operator==(const IndexInfo& in) const;
|
||||||
|
bool operator!=(const IndexInfo& in) const;
|
||||||
|
|
||||||
|
bool operator<=(const IndexInfo& in) const;
|
||||||
|
bool operator<(const IndexInfo& in) const;
|
||||||
|
bool operator>(const IndexInfo& in) const;
|
||||||
|
bool operator>=(const IndexInfo& in) const;
|
||||||
|
|
||||||
|
|
||||||
const IndexInfo* getPtr(size_t inum) const;
|
const IndexInfo* getPtr(size_t inum) const;
|
||||||
std::intptr_t getPtrNum() const;
|
std::intptr_t getPtrNum() const;
|
||||||
size_t dim() const;
|
size_t dim() const;
|
||||||
|
size_t max() const;
|
||||||
size_t getStepSize(size_t inum) const;
|
size_t getStepSize(size_t inum) const;
|
||||||
size_t getStepSize() const;
|
size_t getStepSize() const;
|
||||||
|
IndexType type() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
IndexInfo() = default;
|
||||||
|
|
||||||
std::vector<IndexInfo> mNext;
|
std::vector<IndexInfo> mNext;
|
||||||
std::intptr_t mPtrNum;
|
std::intptr_t mPtrNum;
|
||||||
size_t mDim;
|
size_t mDim;
|
||||||
|
size_t mMax;
|
||||||
size_t mStepSize;
|
size_t mStepSize;
|
||||||
|
IndexType mType;
|
||||||
};
|
};
|
||||||
|
|
||||||
template <class IndexClass>
|
template <class IndexClass>
|
||||||
IndexInfo::IndexInfo(const IndexClass& ind, size_t stepSize) :
|
IndexInfo::IndexInfo(const IndexClass& ind, size_t stepSize) :
|
||||||
mNext(ind.infoVec()),
|
mNext(ind.infoVec()),
|
||||||
mPtrNum( reinterpret_cast<std::intptr_t>( &ind ) ),
|
mPtrNum( reinterpret_cast<std::intptr_t>( &ind ) ),
|
||||||
mDim(ind.rangePtr()->dim()),
|
mDim(ind.vrange()->dim()),
|
||||||
|
mMax(ind.max()),
|
||||||
mStepSize(stepSize)
|
mStepSize(stepSize)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
//#include "ranges/range_base.h"
|
//#include "ranges/range_base.h"
|
||||||
#include "ranges/index_type.h"
|
#include "ranges/index_type.h"
|
||||||
|
#include "base_def.h"
|
||||||
|
|
||||||
namespace MultiArrayTools
|
namespace MultiArrayTools
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue