Matrix.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00029 #ifndef KEYVALUE_KEY_GENERIC_MATRIX_H_
00030 #define KEYVALUE_KEY_GENERIC_MATRIX_H_
00031
00032 #include "keyvalue/extern/String.h"
00033 #include "keyvalue/key/converter/StdMatrix.h"
00034 #include "keyvalue/key/Traits.h"
00035
00036 namespace keyvalue {
00037 namespace key {
00038
00046 template<typename ElementType>
00047 class Matrix : public Traits<ElementType, StdMatrix> {
00048
00049 public:
00050
00054 explicit
00055 Matrix(const string& name);
00056
00065 Matrix(const string& name, size_t nRows, size_t nCols_);
00066
00067 private:
00068
00069 private :
00070
00079 void
00080 checkSize(size_t nRows, size_t nCols) const;
00081
00082 size_t nRows_;
00083 size_t nCols_;
00084
00085 };
00086
00087
00088
00089
00090
00091 template<typename ElementType>
00092 Matrix<ElementType>::Matrix(const string& name) : Matrix::Traits_(name),
00093 nRows_(0), nCols_(0) {
00094 }
00095
00096 template<typename ElementType>
00097 Matrix<ElementType>::Matrix(const string& name, const size_t nRows,
00098 const size_t nCols) : Matrix::Traits_(name), nRows_(nRows), nCols_(nCols)
00099 {
00100 }
00101
00102
00103
00104
00105
00106 template<typename ElementType>
00107 void
00108 Matrix<ElementType>::checkSize(const size_t nRows, const size_t nCols) const
00109 {
00110 if (nRows_ != 0 && nRows_ != nRows)
00111 throw RuntimeError() & "Matrix assigned to key '" & Key::getName() &
00112 "' has wrong number of rows! Expecting " & nRows_ & " got " & nRows &
00113 ".";
00114
00115 if (nCols_ != 0 && nCols_ != nCols)
00116 throw RuntimeError() & "Matrix assigned to key '" & Key::getName() &
00117 "' has wrong number of columns! Expecting " & nCols_ & " got " & nCols
00118 & ".";
00119 }
00120
00121 }
00122 }
00123
00124 #endif // KEYVALUE_KEY_GENERIC_MATRIX_H_