Experimental class template Module<T>

Allocates ps3 memory for specific instance T
This commit is contained in:
Nekotekina 2015-09-08 16:53:28 +03:00
parent 093ecc0a02
commit 12f36cf31f
123 changed files with 494 additions and 379 deletions

View file

@ -1,42 +1,32 @@
#pragma once
template<typename T>
struct BaseInterval
template<typename T1, typename T2> struct range_t
{
static const uint64_t zero = 0ull;
static const uint64_t notz = 0xffffffffffffffffull;
T1 _min; // first value
T2 _max; // second value
};
T m_min, m_max;
template<typename T1, typename T2> constexpr range_t<std::decay_t<T1>, std::decay_t<T2>> make_range(T1&& _min, T2&& _max)
{
return{ std::forward<T1>(_min), std::forward<T2>(_max) };
}
static BaseInterval<T> make(T min_value, T max_value)
{
BaseInterval<T> res = { min_value, max_value };
return res;
}
template<typename T1, typename T2, typename T> constexpr bool operator <(const range_t<T1, T2>& range, const T& value)
{
return range._min < value && range._max < value;
}
static BaseInterval<T> make()
{
return make((T&)zero, (T&)notz);
}
template<typename T1, typename T2, typename T> constexpr bool operator <(const T& value, const range_t<T1, T2>& range)
{
return value < range._min && value < range._max;
}
bool getconst(T& result)
{
if (m_min == m_max)
{
result = m_min;
return true;
}
else
{
return false;
}
}
template<typename T1, typename T2, typename T> constexpr bool operator ==(const range_t<T1, T2>& range, const T& value)
{
return !(value < range._min) && !(range._max < value);
}
bool isindef()
{
if (T == float)
{
}
}
};
template<typename T1, typename T2, typename T> constexpr bool operator ==(const T& value, const range_t<T1, T2>& range)
{
return !(value < range._min) && !(range._max < value);
}