From 5d0e93adfee196ed6c116851c0d94feb6ebb2631 Mon Sep 17 00:00:00 2001 From: George Perendia Date: Mon, 8 Mar 2010 10:09:45 +0000 Subject: [PATCH] Declare libmat destructors virtual --- mex/sources/estimation/DecisionRules.hh | 2 ++ .../estimation/libmat/GeneralizedSchurDecomposition.hh | 2 +- mex/sources/estimation/libmat/LUSolver.hh | 2 +- mex/sources/estimation/libmat/Matrix.hh | 4 +++- mex/sources/estimation/libmat/QRDecomposition.hh | 2 +- mex/sources/estimation/libmat/Vector.hh | 4 +++- 6 files changed, 11 insertions(+), 5 deletions(-) diff --git a/mex/sources/estimation/DecisionRules.hh b/mex/sources/estimation/DecisionRules.hh index fdba62b7d..22e30bdf1 100644 --- a/mex/sources/estimation/DecisionRules.hh +++ b/mex/sources/estimation/DecisionRules.hh @@ -57,6 +57,8 @@ public: DecisionRules(size_t n_arg, size_t p_arg, const std::vector &zeta_fwrd_arg, const std::vector &zeta_back_arg, const std::vector &zeta_mixed_arg, const std::vector &zeta_static_arg, double qz_criterium); + virtual ~DecisionRules(){}; + /*! \param jacobian First columns are backetermined vars at t-1 (in the order of zeta_back_mixed), then all vars at t (in the orig order), then forward vars at t+1 (in the order of zeta_fwrd_mixed), then exogenous vars. */ diff --git a/mex/sources/estimation/libmat/GeneralizedSchurDecomposition.hh b/mex/sources/estimation/libmat/GeneralizedSchurDecomposition.hh index bf366597a..ca7ddc903 100644 --- a/mex/sources/estimation/libmat/GeneralizedSchurDecomposition.hh +++ b/mex/sources/estimation/libmat/GeneralizedSchurDecomposition.hh @@ -41,7 +41,7 @@ public: }; //! \todo Replace heuristic choice for workspace size by a query to determine the optimal size GeneralizedSchurDecomposition(size_t n_arg, double criterium_arg); - ~GeneralizedSchurDecomposition(); + virtual ~GeneralizedSchurDecomposition(); //! \todo Add a lock around the modification of criterium_static for making it thread-safe template void compute(Mat1 &S, Mat2 &T, Mat3 &Z, size_t &sdim) throw (GSDException); diff --git a/mex/sources/estimation/libmat/LUSolver.hh b/mex/sources/estimation/libmat/LUSolver.hh index d6d24db56..e78c18c74 100644 --- a/mex/sources/estimation/libmat/LUSolver.hh +++ b/mex/sources/estimation/libmat/LUSolver.hh @@ -35,7 +35,7 @@ public: LUException(lapack_int info_arg) : info(info_arg) {}; }; LUSolver(size_t dim_arg); - ~LUSolver(); + virtual ~LUSolver(); /*! Computes A^(-1)*B (possibly transposing A). The output is stored in B. diff --git a/mex/sources/estimation/libmat/Matrix.hh b/mex/sources/estimation/libmat/Matrix.hh index 2175b8b53..66ab5650d 100644 --- a/mex/sources/estimation/libmat/Matrix.hh +++ b/mex/sources/estimation/libmat/Matrix.hh @@ -68,7 +68,7 @@ class Matrix Matrix(size_t rows_arg, size_t cols_arg); Matrix(size_t size_arg); Matrix(const Matrix &arg); - ~Matrix(); + virtual ~Matrix(); inline size_t getRows() const { return rows; } inline size_t getCols() const { return cols; } inline size_t getLd() const { return rows; } @@ -103,6 +103,7 @@ class MatrixView MatrixView(double *data_arg, size_t rows_arg, size_t cols_arg, size_t ld_arg); MatrixView(Matrix &arg, size_t row_offset, size_t col_offset, size_t rows_arg, size_t cols_arg); + virtual ~MatrixView(){}; inline size_t getRows() const { return rows; } inline size_t getCols() const { return cols; } inline size_t getLd() const { return ld; } @@ -140,6 +141,7 @@ class MatrixConstView MatrixConstView(const double *data_arg, size_t rows_arg, size_t cols_arg, size_t ld_arg); MatrixConstView(const Matrix &arg, size_t row_offset, size_t col_offset, size_t rows_arg, size_t cols_arg); + virtual ~MatrixConstView(){}; inline size_t getRows() const { return rows; } inline size_t getCols() const { return cols; } inline size_t getLd() const { return ld; } diff --git a/mex/sources/estimation/libmat/QRDecomposition.hh b/mex/sources/estimation/libmat/QRDecomposition.hh index 78f834bbe..63c7c6a65 100644 --- a/mex/sources/estimation/libmat/QRDecomposition.hh +++ b/mex/sources/estimation/libmat/QRDecomposition.hh @@ -43,7 +43,7 @@ public: \param[in] cols2_arg Number of columns of the matrix to be multiplied by Q */ QRDecomposition(size_t rows_arg, size_t cols_arg, size_t cols2_arg); - ~QRDecomposition(); + virtual ~QRDecomposition(); //! Performs the QR decomposition of a matrix, and left-multiplies another matrix by Q /*! \param[in,out] A On input, the matrix to be decomposed. On output, equals to the output of dgeqrf diff --git a/mex/sources/estimation/libmat/Vector.hh b/mex/sources/estimation/libmat/Vector.hh index 23d96997d..7b77772c5 100644 --- a/mex/sources/estimation/libmat/Vector.hh +++ b/mex/sources/estimation/libmat/Vector.hh @@ -63,7 +63,7 @@ class Vector public: Vector(size_t size_arg); Vector(const Vector &arg); - ~Vector(); + virtual ~Vector(); inline size_t getSize() const { return size; } inline size_t getStride() const { return 1; } inline double *getData() { return data; } @@ -99,6 +99,7 @@ private: public: VectorView(Vector &arg, size_t offset, size_t size_arg); VectorView(double *data_arg, size_t size_arg, size_t stride_arg); + virtual ~VectorView(){}; inline size_t getSize() const { return size; } inline size_t getStride() const { return stride; } inline double *getData() { return data; } @@ -136,6 +137,7 @@ private: public: VectorConstView(const Vector &arg, size_t offset, size_t size_arg); VectorConstView(const double *data_arg, size_t size_arg, size_t stride_arg); + virtual ~VectorConstView(){}; inline size_t getSize() const { return size; } inline size_t getStride() const { return stride; } inline const double *getData() const { return data; }