2021-05-25 22:19:44 +02:00
# ifndef MATRIXVEC_HPP
# define MATRIXVEC_HPP
# include "../matrix.hpp"
# include "../../vector/vector.hpp"
namespace lasd {
template < typename Data >
class MatrixVec : virtual public Matrix < Data > ,
virtual public Vector < Data > { // Must extend Matrix<Data>
protected :
using Matrix < Data > : : rows ;
using Matrix < Data > : : columns ;
using Vector < Data > : : size ;
2021-05-31 11:26:27 +02:00
using Vector < Data > : : Elements ;
2021-05-25 22:19:44 +02:00
public :
MatrixVec ( ) = default ;
2021-05-31 11:26:27 +02:00
MatrixVec ( ulong , ulong ) ; // A matrix of some specified dimension
2021-05-25 22:19:44 +02:00
MatrixVec ( const MatrixVec & ) ;
MatrixVec ( MatrixVec & & ) noexcept ;
virtual ~ MatrixVec ( ) ;
MatrixVec & operator = ( const MatrixVec & ) ;
MatrixVec & operator = ( MatrixVec & & ) noexcept ;
bool operator = = ( const MatrixVec & ) const noexcept ;
bool operator ! = ( const MatrixVec & ) const noexcept ;
// Specific member functions (inherited from Matrix)
void RowResize ( const ulong & ) override ; // Override Matrix member
void ColumnResize ( const ulong & ) override ; // Override Matrix member
2021-05-31 11:26:27 +02:00
bool ExistsCell ( const ulong & , const ulong & ) const noexcept override ; // Override Matrix member (should not throw exceptions)
2021-06-02 10:02:21 +02:00
Data & operator ( ) ( const ulong , const ulong ) override ; // Override Matrix member (mutable access to the element; throw out_of_range when out of range)
const Data & operator ( ) ( const ulong , const ulong ) const override ; // Override Matrix member (immutable access to the element; throw out_of_range when out of range and length_error when not present)
2021-05-25 22:19:44 +02:00
// Specific member functions (inherited from Container)
void Clear ( ) override ; // Override Container member
using Vector < Data > : : MapPreOrder ;
using Vector < Data > : : MapPostOrder ;
using Vector < Data > : : FoldPreOrder ;
using Vector < Data > : : FoldPostOrder ;
// type MapPreOrder(arguments) specifiers; // Override MappableContainer member
// type MapPostOrder(arguments) specifiers; // Override MappableContainer member
// type FoldPreOrder(arguments) specifiers; // Override FoldableContainer member
// type FoldPostOrder(arguments) specifiers; // Override FoldableContainer member
2021-06-02 10:02:21 +02:00
void debug ( ) {
return ;
}
2021-05-25 22:19:44 +02:00
} ;
}
# include "matrixvec.cpp"
# endif