Skip to content

Commit

Permalink
Remove all virtuals
Browse files Browse the repository at this point in the history
  • Loading branch information
lindsayad committed Aug 15, 2019
1 parent 11bee35 commit b312f9f
Show file tree
Hide file tree
Showing 10 changed files with 866 additions and 805 deletions.
1,545 changes: 804 additions & 741 deletions src/numerics/include/metaphysicl/dynamicsparsenumberabstract.h

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,9 @@ class DynamicSparseNumberAbstract

typedef I index_value_type;

virtual std::size_t size() const = 0;
std::size_t size() const;

virtual void resize(std::size_t s) = 0;
void resize(std::size_t s);

DynamicSparseNumberAbstract() = default;

Expand All @@ -76,7 +76,13 @@ class DynamicSparseNumberAbstract
DynamicSparseNumberAbstract & operator=(const DynamicSparseNumberAbstract & src) = default;
#endif

virtual ~DynamicSparseNumberAbstract() = default;
template <typename Data2, typename Indices2, class... SubTypeArgs2>
DynamicSparseNumberAbstract(
const DynamicSparseNumberAbstract<Data2, Indices2, SubType, SubTypeArgs2...> & src);

template <typename Data2, typename Indices2, class... SubTypeArgs2>
DynamicSparseNumberAbstract(
DynamicSparseNumberAbstract<Data2, Indices2, SubType, SubTypeArgs2...> && src);

T * raw_data();

Expand Down
8 changes: 7 additions & 1 deletion src/numerics/include/metaphysicl/dynamicsparsenumberarray.h
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,13 @@ DynamicSparseNumberArray<T,I>::DynamicSparseNumberArray(const T2& val) {
template <typename T, typename I>
template <typename T2, typename I2>
inline
DynamicSparseNumberArray<T,I>::DynamicSparseNumberArray(DynamicSparseNumberArray<T2, I2> src) :
DynamicSparseNumberArray<T,I>::DynamicSparseNumberArray(const DynamicSparseNumberArray<T2, I2> & src) :
DynamicSparseNumberBase<T,I,MetaPhysicL::DynamicSparseNumberArray>(src) {}

template <typename T, typename I>
template <typename T2, typename I2>
inline
DynamicSparseNumberArray<T,I>::DynamicSparseNumberArray(DynamicSparseNumberArray<T2, I2> && src) :
DynamicSparseNumberBase<T,I,MetaPhysicL::DynamicSparseNumberArray>(src) {}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,10 @@ class DynamicSparseNumberArray :
#endif

template <typename T2, typename I2>
DynamicSparseNumberArray(DynamicSparseNumberArray<T2, I2> src);
DynamicSparseNumberArray(const DynamicSparseNumberArray<T2, I2> & src);

template <typename T2, typename I2>
DynamicSparseNumberArray(DynamicSparseNumberArray<T2, I2> && src);

template <typename T2, typename I2>
DynamicSparseNumberArray
Expand Down
24 changes: 8 additions & 16 deletions src/numerics/include/metaphysicl/dynamicsparsenumberbase.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,29 +35,21 @@
namespace MetaPhysicL {

template <typename T, typename I, template <typename, typename> class SubType>
template <typename T2, typename I2>
inline
std::size_t
DynamicSparseNumberBase<T,I,SubType>::size() const
{ metaphysicl_assert_equal_to(_data.size(), _indices.size());
return _data.size(); }

template <typename T, typename I, template <typename, typename> class SubType>
inline
void
DynamicSparseNumberBase<T,I,SubType>::resize(std::size_t s)
{ metaphysicl_assert_equal_to(_data.size(), _indices.size());
_data.resize(s);
_indices.resize(s); }
DynamicSparseNumberBase<T,I,SubType>::DynamicSparseNumberBase(
const DynamicSparseNumberBase<T2, I2, SubType> & src) :
DynamicSparseNumberAbstract<std::vector<T>, std::vector<I>, SubType, T, I>(src)
{
}

template <typename T, typename I, template <typename, typename> class SubType>
template <typename T2, typename I2>
inline
DynamicSparseNumberBase<T,I,SubType>::DynamicSparseNumberBase(
const DynamicSparseNumberBase<T2, I2, SubType> & src)
DynamicSparseNumberBase<T2, I2, SubType> && src) :
DynamicSparseNumberAbstract<std::vector<T>, std::vector<I>, SubType, T, I>(src)
{
this->resize(src.size());
std::copy(src.nude_data().begin(), src.nude_data().end(), _data.begin());
std::copy(src.nude_indices().begin(), src.nude_indices().end(), _indices.begin());
}

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,13 +60,8 @@ class DynamicSparseNumberBase : public DynamicSparseNumberAbstract<std::vector<T
template <typename T2, typename I2>
DynamicSparseNumberBase(const DynamicSparseNumberBase<T2, I2, SubType> & src);

std::size_t size() const override;

void resize(std::size_t s) override;

protected:
using DynamicSparseNumberAbstract<std::vector<T>, std::vector<I>, SubType, T, I>::_indices;
using DynamicSparseNumberAbstract<std::vector<T>, std::vector<I>, SubType, T, I>::_data;
template <typename T2, typename I2>
DynamicSparseNumberBase(DynamicSparseNumberBase<T2, I2, SubType> && src);
};

}
Expand Down
8 changes: 7 additions & 1 deletion src/numerics/include/metaphysicl/dynamicsparsenumbervector.h
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,13 @@ DynamicSparseNumberVector<T,I>::DynamicSparseNumberVector(const T2& metaphysicl_
template <typename T, typename I>
template <typename T2, typename I2>
inline
DynamicSparseNumberVector<T,I>::DynamicSparseNumberVector(DynamicSparseNumberVector<T2, I2> src) :
DynamicSparseNumberVector<T,I>::DynamicSparseNumberVector(const DynamicSparseNumberVector<T2, I2> & src) :
DynamicSparseNumberBase<T,I,MetaPhysicL::DynamicSparseNumberVector>(src) {}

template <typename T, typename I>
template <typename T2, typename I2>
inline
DynamicSparseNumberVector<T,I>::DynamicSparseNumberVector(DynamicSparseNumberVector<T2, I2> && src) :
DynamicSparseNumberBase<T,I,MetaPhysicL::DynamicSparseNumberVector>(src) {}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,10 @@ class DynamicSparseNumberVector :
#endif

template <typename T2, typename I2>
DynamicSparseNumberVector(DynamicSparseNumberVector<T2, I2> src);
DynamicSparseNumberVector(const DynamicSparseNumberVector<T2, I2> & src);

template <typename T2, typename I2>
DynamicSparseNumberVector(DynamicSparseNumberVector<T2, I2> && src);

template <typename T2, typename I2>
typename MultipliesType<T,T2>::supertype
Expand Down
39 changes: 19 additions & 20 deletions src/numerics/include/metaphysicl/semidynamicsparsenumberarray.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,23 +30,6 @@
namespace MetaPhysicL
{

template <typename T, typename I, typename N>
inline std::size_t
SemiDynamicSparseNumberArray<T, I, N>::size() const
{
metaphysicl_assert_equal_to(_data.size(), _indices.size());
return _data.size();
}

template <typename T, typename I, typename N>
inline void
SemiDynamicSparseNumberArray<T, I, N>::resize(std::size_t s)
{
metaphysicl_assert_equal_to(_data.size(), _indices.size());
_data.resize(s);
_indices.resize(s);
}

template <typename T, typename I, typename N>
inline SemiDynamicSparseNumberArray<T, I, N>::SemiDynamicSparseNumberArray(const T & val)
{
Expand Down Expand Up @@ -76,10 +59,26 @@ template <typename T, typename I, typename N>
template <typename T2, typename I2>
inline SemiDynamicSparseNumberArray<T, I, N>::SemiDynamicSparseNumberArray(
const SemiDynamicSparseNumberArray<T2, I2, N> & src)
: DynamicSparseNumberAbstract<DynamicStdArrayWrapper<T, N>,
DynamicStdArrayWrapper<I, N>,
SemiDynamicSparseNumberArray,
T,
I,
N>(src)
{
}

template <typename T, typename I, typename N>
template <typename T2, typename I2>
inline SemiDynamicSparseNumberArray<T, I, N>::SemiDynamicSparseNumberArray(
SemiDynamicSparseNumberArray<T2, I2, N> && src)
: DynamicSparseNumberAbstract<DynamicStdArrayWrapper<T, N>,
DynamicStdArrayWrapper<I, N>,
SemiDynamicSparseNumberArray,
T,
I,
N>(src)
{
this->resize(src.size());
std::copy(src.nude_data().begin(), src.nude_data().end(), _data.begin());
std::copy(src.nude_indices().begin(), src.nude_indices().end(), _indices.begin());
}

DynamicSparseNumberAbstract_op(SemiDynamicSparseNumberArray, +, Plus) // Union)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,13 +41,6 @@ class SemiDynamicSparseNumberArray
public safe_bool<SemiDynamicSparseNumberArray<T, I, N>>
{
public:
typedef DynamicSparseNumberAbstract<DynamicStdArrayWrapper<T, N>,
DynamicStdArrayWrapper<I, N>,
::MetaPhysicL::SemiDynamicSparseNumberArray,
T,
I,
N>
Parent;

template <typename T2, typename I2 = I>
struct rebind
Expand All @@ -73,13 +66,8 @@ class SemiDynamicSparseNumberArray
template <typename T2, typename I2>
SemiDynamicSparseNumberArray(const SemiDynamicSparseNumberArray<T2, I2, N> & src);

std::size_t size() const override;

void resize(std::size_t s) override;

protected:
using Parent::_data;
using Parent::_indices;
template <typename T2, typename I2>
SemiDynamicSparseNumberArray(SemiDynamicSparseNumberArray<T2, I2, N> && src);
};

//
Expand Down

0 comments on commit b312f9f

Please sign in to comment.