matfileIO.hh

Go to the documentation of this file.
1 
8 #ifndef matfileInputOutput_hh
9 #define matfileInputOutput_hh
10 
11 #include <string>
12 #include <typeinfo>
13 
14 #include "matIO_1.5/matio.h" // <matio.h>
15 #include "basics.hh"
16 #include "toolbox.hh"
17 #include "operator.hh"
18 #include <toolbox/sharedPointer.hh>
19 #include <basics/exceptions.hh>
20 
21 namespace concepts {
22 
23  typedef std::set<const std::type_info*> set_info;
24 
25  // forward declaration
26  class MatfileIO;
27 
28  // **************************************************** MatfileIOError **
29 
33  class MatfileIOError: public ExceptionBase {
34  public:
38  MatfileIOError(const std::string& file, const unsigned int line,
39  const std::string& function,
40  const std::string& errorMessage) throw ();
41 
42  virtual const char* what() const throw();
43 
44  virtual ~MatfileIOError() throw () {};
45  protected:
46  virtual std::ostream& info(std::ostream& os) const throw ();
47  private:
48  std::string errorMessage_;
49  mutable std::string outputMessage_ ;
50  };
51 
52  // ********************************************************* MatfileIO **
53 
54 
55 
56  //
57  // TODO: VALGRIND !
58  // @test test::MatfileTest
59  //
60 
61 
62 
63  //############################################################ Introduction to update this class
64  //
65  // To add new dense/sparse objects (rank <= 2) to for add/get -routines. Do the following:
66  // -> Write new get_/add_ routine for the object (matfileIO_C /matfileIO_R for Cmplx/Real based ones)
67  // -> Write necessary assertion routines if needed,
68  //
69  // To generalise this class to rank > 2 objects (cubes, general multi-arrays) it could be a good idea to add a assertRank_
70  // routine in the get routines.
71  //
72  // This class works with dense/sparse/int formats.To write *.mat-files with structs/ cells data,
73  // check the documentation of matIO and add needed functions.
74  //
75  //############################################################
76 
77 
78 
112  class MatfileIO : public OutputOperator{
113  public:
114 
125  MatfileIO(const std::string filename);
126 
127  /*
128  * The deconstructor closes the MatfileIO instance if it is still open.
129  */
130  virtual ~MatfileIO() {
131  close();
132  }
133 
159  template<class T>
160  void add(const T& u, const std::string varName,
161  enum matio_compression compress = MAT_COMPRESSION_NONE) throw (MatfileIOError) {
162 
163 
164  if (!isOpen()) {
165  throw conceptsException(MatfileIOError(__FILE__, __LINE__, __FUNCTION__, "Cannot add something. No *.mat-file opened."));
166  return;
167  }
168 
169  //The var is currently being written in the open stream.
170  if (matvar_str_cur_.exist(varName)) {
171  throw conceptsException(MatfileIOError(__FILE__, __LINE__, __FUNCTION__, "Not able to add : a variable with the same name is being added currently. Close the MatfileIO and retry again with overwrite rights."));
172  return;
173  }
174  //The var already exists in the opened matfile and will be overwritten:
175  else if (matvar_str_.exist(varName)) {
176  if (overWrite_) {
177  remove(varName);
178  //it gets a variable used in the current set;
179  matvar_str_cur_.insert(varName);
180 
181 #ifdef HAS_Z // if z lib is installed you can use the compression given
182  add_(u, varName, compress);
183 #else // if not by default no compression is applicated
184  add_(u, varName, MAT_COMPRESSION_NONE);
185 #endif
186  return;
187  } else {
188  throw conceptsException(MatfileIOError(__FILE__, __LINE__, __FUNCTION__, " The variable '" + varName + "' has been declared not to be overwritten."));
189  }
190  } else if (!matvar_str_.exist(varName)) {
191  matvar_str_.insert(varName);
192  matvar_str_cur_.insert(varName);
193 #ifdef HAS_Z // if z lib is installed you can use the compression given
194  add_(u, varName, compress);
195 #else // if not by default no compression is applicated
196  add_(u, varName, MAT_COMPRESSION_NONE);
197 #endif
198  return;
199  }
200  // just to be sure
201  throw conceptsException(MatfileIOError(__FILE__, __LINE__, __FUNCTION__, "Some unhandled/ unknown error arisen in add-Routine in MatfileIO."));
202  return;
203  }
204 
232  template<class T>
233  void get(T& u, const std::string varName) throw (MatfileIOError, MissingFeature) {
234 
235  //for sparse, int and uint use Mat_VarRead method, so structure = 1, (structure = 0, ie. for dense)
236  bool structure = isSparse(varName) || isInt(varName) || isUint(varName);
237 
238 
239  // isSparse checks also for existence of varName.
240  // for Sparse Format the Mat_VarReadinfo is not working with mat_sparse_t pointer
241  // so read with Mat_VarRead is used. Here it has no problems with reading compressed format.
242  // for integer format, needed to access data pointer.
243  matvar_ = structure ? Mat_VarRead(mat_, varName.c_str()): Mat_VarReadInfo(mat_, varName.c_str()) ;
244 
245  //check if reading works
247 
248  //Multidimensional Arrays, i.e. rank > 2 are not supported atm.
249  if (matvar_->rank > 2)
251  "At the moments just rank 2 objects are supported in MatfileIO");
252 
253  //get_ routine checks if requested structure coincides with the one of u (dense/sparse)
254  get_(u, matvar_);
255  }
256 
263  void reopen();
264 
270  void close();
271 
275  void clear();
276 
281  inline bool isOpen() const {
282  return (mat_ != NULL);
283  }
284 
288  inline bool isEmpty() const {
289  return (matvar_str_.isempty());
290  }
291 
299  bool remove(const std::string varName);
300 
304  inline std::string filename() const {
305  return fileName_;
306  }
307 
314  inline void overWrite(bool toOverWrite) {
315  overWrite_ = toOverWrite;
316  }
317 
318  //##################################################################
319  // public control routines
320  //##################################################################
321 
326  bool exists(const std::string& varName) const;
327 
331  bool isReal(const std::string& varName) const;
332 
336  bool isCmplx(const std::string& varName) const;
337 
341  bool isScalar(const std::string& varName) const;
342 
346  bool isDense(const std::string& varName) const;
347 
351  bool isSparse(const std::string& varName) const;
352 
356  bool isInt(const std::string& varName) const;
357 
361  bool isUint(const std::string& varName) const;
362 
366  uint lengthVector(const std::string& varName) const;
367 
368  // /*
369  // * Returns true if the variable /c varName is a cell, else 0.
370  // */
371  // bool isCell(const std::string& varName) const;
372 
373 
374  //##################################################################
375  // public assertion routines
376  //##################################################################
380  void assertCmplx(const std::string& varName) const throw (MatfileIOError);
384  void assertExistence(const std::string& varName) const throw (MatfileIOError);
385 
389  void assertVector(const std::string& varName) const throw (MatfileIOError);
390 
394  void assertQuadratic(const std::string& varName) const throw (MatfileIOError);
395 
396  protected:
400  virtual std::ostream& info(std::ostream& os) const;
401 
402  private:
403 
404  //the current Matfile
405  mat_t* mat_;
406  //the current variable in the Matfile
407  matvar_t* matvar_;
408 
409  //name of the current open *.mat-file
410  std::string fileName_;
411 
412  //collection of all names of the variables in the current mat-file
414 
415  //collection of all names of variables that are going to be added in the current mat-file-stream
416  //this is used to avoid adding different objects with the same name to the Matfile, since
417  //this would be followed with an memory leak error, when the object MatfileIO wasn't closed before.
419 
420  //flag that controls if one wants to overwrite variables or forbid to do so
421  //it can be controlled with the overWrite(bool) routine
423 
425  std::string matfileEnding_(const std::string& filename);
426 
427  //##################################################################
428  // add section for sparse objects
429  //##################################################################
430 
434  template<class T>
435  void add_(const SparseMatrix<T>& sparseM, const std::string& varName,
436  enum matio_compression compress);
437 
441  template<class T>
442  void add_(const DiagonalMatrix<T>& diagM, const std::string& varName,
443  enum matio_compression compress);
444 
445  //##################################################################
446  // add section for dense objects
447  //##################################################################
448 
452  template<class T>
453  void add_(const ElementMatrix<T>& dense, const std::string& varName,
454  enum matio_compression compress);
455 
459  template<uint dim>
460  void add_(const Array<Point<Real,dim> >& array, const std::string& varName,
461  enum matio_compression compress);
462 
466  template<uint dim>
467  void add_(const Array<Point<Cmplx,dim> >& array, const std::string& varName,
468  enum matio_compression compress);
469 
473  template<class T>
474  void add_(const Array<T>& array, const std::string& varName,
475  enum matio_compression compress);
476 
480  template<class T>
481  void add_(const Vector<T>& vec, const std::string& varName,
482  enum matio_compression compress);
483 
487  template<class T>
488  void add_(const std::vector<T> &vec, const std::string& varName,
489  enum matio_compression compress);
490 
494  template<uint dim>
495  void add_(const Mapping<Real, dim>& map, const std::string& varName,
496  enum matio_compression compress);
497 
501  template<uint dim>
502  void add_(const Mapping<Cmplx, dim>& map, const std::string& varName,
503  enum matio_compression compress);
504 
508  template<uint dim>
509  void add_(const Point<Real, dim>& point, const std::string& varName,
510  enum matio_compression compress);
511 
515  template<uint dim>
516  void add_(const Point<Cmplx, dim>& point, const std::string& varName,
517  enum matio_compression compress);
518 
522  void add_(const Real& scalar, const std::string& varName,
523  enum matio_compression compress);
524 
528  void add_(const Cmplx& scalar, const std::string& varName,
529  enum matio_compression compress);
530 
534  void add_(const int scalar, const std::string& str,
535  enum matio_compression compress);
536 
540  void add_(const uint scalar, const std::string& str,
541  enum matio_compression compress);
542 
543  //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
544  //TODO: add section for cell objects ?!
545  //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
546  // possible further add classes
547  // void add_ vector<Vector>
548  // void add_ std::vector<ElementMatrix>
549  // void add_ std::vector<SparseMatrix>
550 
551 
552  //##################################################################
553  // getter section for sparse objects
554  //##################################################################
555 
559  template<class T>
560  void get_(SparseMatrix<T>& sparse, matvar_t*& matvar);
561 
569  template<class T>
570  void get_(DiagonalMatrix<T>& sparse, matvar_t*& matvar);
571 
572  //##################################################################
573  // getter section for dense objects
574  //##################################################################
575 
576 
580  template<class T>
581  void get_(ElementMatrix<T>& dense, matvar_t*& matvar);
582 
586  template<class T>
587  void get_(DenseMatrix<T>& dense, matvar_t*& matvar);
588 
592  template<class T>
593  void get_(Array<T>& arr, matvar_t*& matvar);
594 
598  template<class T>
599  void get_(Vector<T>& vec, matvar_t*& matvar);
600 
604  template<class T>
605  void get_(std::vector<T>& seq, matvar_t*& matvar);
606 
610  template<class T>
611  void get_(std::vector<Vector<T> >& seq, matvar_t*& matvar);
612 
616  template<uint dim>
617  void get_(Mapping<Real, dim>& map, matvar_t*& matvar);
618 
622  template<uint dim>
623  void get_(Mapping<Cmplx, dim>& map, matvar_t*& matvar);
624 
628  template<uint dim>
629  void get_(Point<Real, dim>& point, matvar_t*& matvar);
630 
634  template<uint dim>
635  void get_(Point<Cmplx, dim>& point, matvar_t*& matvar);
636 
640  void get_(Real& scalar, matvar_t*& matvar);
641 
645  void get_(Cmplx& scalar, matvar_t*& matvar);
646 
650  void get_(int& scalar, matvar_t*& matvar) throw (MatfileIOError);
651 
655  void get_(uint& scalar, matvar_t*& matvar) throw (MatfileIOError);
656 
657  //#################################################################
658  // matvar create section
659  //#################################################################
660 
668  void createDenseReal_(uint m, uint n, const std::string& varName,
669  Real*& dataAccP);
670 
679  void createDenseCmplx_(uint m, uint n, const std::string& varName,
680  Real*& realP, Real*& imgP);
681 
682 
683  //#################################################################
684  // private control section
685  //#################################################################
686 
690  inline bool isReal_(matvar_t* var) const {
691  return (var->isComplex == 0);
692  }
696  inline bool isCmplx_(matvar_t* var) const {
697  return (var->isComplex != 0);
698  }
699 
703  inline bool isSparse_(matvar_t* var) const {
704  return (var->class_type == MAT_C_SPARSE);
705  }
706 
710  inline bool isDense_(matvar_t* var) const {
711  return (var->class_type == MAT_C_DOUBLE);
712  }
713 
717  bool isInt_(matvar_t* var) const{
718  enum matio_classes vc = var->class_type;
719  return (vc == MAT_C_INT8 || vc == MAT_C_INT16 ||
720  vc == MAT_C_INT32|| vc == MAT_C_INT64);
721  }
722 
726  bool isUint_(matvar_t* var) const{
727  enum matio_classes vc = var->class_type;
728  return (vc == MAT_C_UINT8 || vc == MAT_C_UINT16 ||
729  vc == MAT_C_UINT32|| vc == MAT_C_UINT64);
730  }
731 
736  bool isVector_(matvar_t* var) const;
737 
741  bool hasDiagStructur_(matvar_t* var) const;
742 
746  inline bool isQuadratic_(matvar_t* var) const {
747  return (var->dims[0] == var->dims[1]) && (var->rank == 2);
748  }
749 
754  bool isScalar_(matvar_t* var) const;
755 
759  uint lengthVector_(matvar_t* var) const;
760 
761  //#################################################################
762  // private assert section
763  //#################################################################
764  // These methods are used to work with current pointers and don't reread the file, like in
765  // possible public analog methods having a string as input, if assert, they free the matvar_t.
766 
767 
768  void wrongField_(matvar_t*& var) const throw();
769 
774  void wrongStructure_(matvar_t*& var) const throw();
775 
779  void assertDimension_(uint dim, uint vardim) const throw (MatfileIOError);
780 
785  void assertQuadratic_(matvar_t*& var) const throw (MatfileIOError);
786 
791  void assertVector_(matvar_t*& var) const throw (MatfileIOError);
792 
798  void assertDiagStructur_(matvar_t*& var) const throw (MatfileIOError);
799 
804  void assertScalar_(matvar_t*& var) const throw (MatfileIOError);
805 
810  void assertVar_(matvar_t* var) const throw (MatfileIOError);
811 
816  void assertVar_(mat_sparse_t* var) const throw (MatfileIOError);
817 
821  void assertOpenFile_(mat_t* file) const throw (MatfileIOError);
822 
823  };
824 
825 }
826 #endif
bool exists(const std::string &varName) const
Returns true if the variable /c varName exists, false otherwise.
std::string filename() const
Returns the name of the current open *.mat-file.
Definition: matfileIO.hh:304
void assertQuadratic_(matvar_t *&var) const
throws an exception if the variable is not rank 2 and quadratic.
bool isCmplx(const std::string &varName) const
Return true if the variable /c varName is of type double complex.
void get_(int &scalar, matvar_t *&matvar)
Getter routine for int scalar.
virtual ~MatfileIO()
Definition: matfileIO.hh:130
void add_(const std::vector< T > &vec, const std::string &varName, enum matio_compression compress)
Add routine for a std::vector, i.e.
void assertOpenFile_(mat_t *file) const
throws an exception if mat-file could not be opened
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
void assertVector_(matvar_t *&var) const
throws an exception if the variable has no Vector_structur.
void assertQuadratic(const std::string &varName) const
Throws an exception if the variable is not a quadratic rank 2 object.
void get_(std::vector< Vector< T > > &seq, matvar_t *&matvar)
Getter routine for an std::vector<concepts::Vector>, i.e.
void add_(const Point< Cmplx, dim > &point, const std::string &varName, enum matio_compression compress)
Add routine for a cmplx concepts::Point.
virtual std::ostream & info(std::ostream &os) const
Gives an overview about the variables that are in a current open *.mat-file.
concepts::Set< std::string > matvar_str_cur_
Definition: matfileIO.hh:418
#define conceptsException(exc)
Prepares an exception for throwing.
Definition: exceptions.hh:344
Base class for exceptions.
Definition: exceptions.hh:86
void get(T &u, const std::string varName)
Method to get various objects out of the current open MatfileIO.
Definition: matfileIO.hh:233
void createDenseReal_(uint m, uint n, const std::string &varName, Real *&dataAccP)
Creates the mat variable for a dense real structure and sets a pointer to the data of the variable.
void add_(const Cmplx &scalar, const std::string &varName, enum matio_compression compress)
Add routine for a cmplx scalar.
void get_(SparseMatrix< T > &sparse, matvar_t *&matvar)
Getter routine for a concepts::SparseMatrix.
Concepts *.mat-file tool.
Definition: matfileIO.hh:112
bool isReal_(matvar_t *var) const
Returns 1 if the variables field is Real, otherwise 0.
Definition: matfileIO.hh:690
bool isScalar(const std::string &varName) const
Return true if the variable /c varName is a scalar.
bool isReal(const std::string &varName) const
Return true if the variable /c varName is of type double.
void clear()
Method to remove all variable in the current *.mat-file.
bool isUint(const std::string &varName) const
Returns true if the variable /c varname is uint, else 0.
void add_(const Point< Real, dim > &point, const std::string &varName, enum matio_compression compress)
Add routine for a real concepts::Point.
void add_(const Mapping< Real, dim > &map, const std::string &varName, enum matio_compression compress)
Add routine for a real concepts::Mapping.
bool isVector_(matvar_t *var) const
tests if object has vector size, i.e.
void close()
Method to close the current *.mat-file.
void createDenseCmplx_(uint m, uint n, const std::string &varName, Real *&realP, Real *&imgP)
Creates the mat variable for a dense complex structure and sets pointers to the real and the imaginar...
void get_(DenseMatrix< T > &dense, matvar_t *&matvar)
Getter routine for a concepts::DenseMatrix.
void overWrite(bool toOverWrite)
Method with that u can secure already existing variables in a current open *.mat-file.
Definition: matfileIO.hh:314
void assertScalar_(matvar_t *&var) const
throws an exception if the variable has no Scalar structure.
void assertExistence(const std::string &varName) const
Throws an exception if the variable does not exist.
An array of objects.
Definition: bilinearForm.hh:23
std::string matfileEnding_(const std::string &filename)
adds the ending .mat if needed
bool isEmpty() const
Routine to check if a *.mat-file is empty, i.e.
Definition: matfileIO.hh:288
bool isScalar_(matvar_t *var) const
test if the requested variable is scalar.
bool remove(const std::string varName)
Removes the requested variable named 'str' if it exist in the current matfile.
void reopen()
Method to reopen the *.mat-file that was once opened with the constructor.
void get_(Mapping< Cmplx, dim > &map, matvar_t *&matvar)
Getter routine for a cmplx concepts::Mapping.
void add_(const Real &scalar, const std::string &varName, enum matio_compression compress)
Add routine for a real scalar.
bool isDense_(matvar_t *var) const
Returns true if the variable is a dense Matlab object.
Definition: matfileIO.hh:710
void assertDiagStructur_(matvar_t *&var) const
throws an exception if the variable has no diagonal structure, that is if it is a dense/sparse matrix...
void add_(const Mapping< Cmplx, dim > &map, const std::string &varName, enum matio_compression compress)
Add routine for a cmplx concepts::Mapping.
bool isUint_(matvar_t *var) const
Returns true if the variable is a uint matlab object.
Definition: matfileIO.hh:726
void add_(const Vector< T > &vec, const std::string &varName, enum matio_compression compress)
Add routine for a concepts::Vector.
std::set< const std::type_info * > set_info
Definition: matfileIO.hh:23
void add_(const Array< Point< Real, dim > > &array, const std::string &varName, enum matio_compression compress)
Add routine for a real concepts::Array<concepts::Point>
std::complex< Real > Cmplx
Type for a complex number. It also depends on the setting of Real.
Definition: typedefs.hh:39
MatfileIO(const std::string filename)
Constructor to open/create a *.mat with given name.
void assertVector(const std::string &varName) const
Throws an exception if the variable has no vector struct, that is at most one dimension is larger tha...
void get_(DiagonalMatrix< T > &sparse, matvar_t *&matvar)
Getter routine for a concepts::DiagonalMatrix This methods works iff matvar-data has vector structur ...
void add_(const uint scalar, const std::string &str, enum matio_compression compress)
Add routine for int scalar.
uint lengthVector_(matvar_t *var) const
returns the length of a vector structure, else 0
void get_(uint &scalar, matvar_t *&matvar)
Getter routine for uint scalar.
concepts::Set< std::string > matvar_str_
Definition: matfileIO.hh:413
void get_(Point< Real, dim > &point, matvar_t *&matvar)
Getter routine for a real concepts::Point.
Diagonal matrix.
Definition: diagonal.hh:24
virtual const char * what() const
void get_(Array< T > &arr, matvar_t *&matvar)
Getter routine for a concepts::Array.
void assertDimension_(uint dim, uint vardim) const
throws an exception if the dimensions mismatch, application for Mapping/ Points
void add_(const ElementMatrix< T > &dense, const std::string &varName, enum matio_compression compress)
Add routine for an concepts::ElementMatrix, i.e.
bool isSparse(const std::string &varName) const
Returns true if the variable /c varName is sparse, else 0.
void get_(Cmplx &scalar, matvar_t *&matvar)
Getter routine for a cmplx scalar.
std::string outputMessage_
Definition: matfileIO.hh:49
MatfileIOError(const std::string &file, const unsigned int line, const std::string &function, const std::string &errorMessage)
Constructor.
bool isInt(const std::string &varName) const
Returns true if the variable /c varname is int, else 0.
void add_(const int scalar, const std::string &str, enum matio_compression compress)
Add routine for int scalar.
void assertCmplx(const std::string &varName) const
Throws an exception if the variable is not (at least) a complex.
bool hasDiagStructur_(matvar_t *var) const
test if object has diagonal confortable structure, that is diagonal square matrix or vector
std::string fileName_
Definition: matfileIO.hh:410
void get_(Point< Cmplx, dim > &point, matvar_t *&matvar)
Getter routine for a cmplx concepts::Point.
Element matrix.
Definition: linearForm.hh:18
uint lengthVector(const std::string &varName) const
Return its length if /c varName is a vector, 0 otherwise.
std::string errorMessage_
Definition: matfileIO.hh:48
Exception class to express a missing feature.
Definition: exceptions.hh:206
bool isQuadratic_(matvar_t *var) const
test if the requested variable is quadratic and a 2D Tensor (used for Mapping)
Definition: matfileIO.hh:746
bool isDense(const std::string &varName) const
Returns true if the variable /c varName is dense, else 0.
matvar_t * matvar_
Definition: matfileIO.hh:407
bool isSparse_(matvar_t *var) const
Returns true if the variable is a Matlab sparse array, 0 else.
Definition: matfileIO.hh:703
void get_(Vector< T > &vec, matvar_t *&matvar)
Getter routine for a concepts::Vector.
void assertVar_(mat_sparse_t *var) const
Throws an exception if the matvar sparse pointer is Null use i.e.
bool isCmplx_(matvar_t *var) const
Returns 1 if the variable's field is Complex, otherwise 0.
Definition: matfileIO.hh:696
void wrongField_(matvar_t *&var) const
void wrongStructure_(matvar_t *&var) const
throws an exception for wrong structure.
void add_(const Array< T > &array, const std::string &varName, enum matio_compression compress)
Add routine for an concepts::Array.
void add_(const SparseMatrix< T > &sparseM, const std::string &varName, enum matio_compression compress)
adds a SparseMatrix to the current *.mat file.
void add_(const DiagonalMatrix< T > &diagM, const std::string &varName, enum matio_compression compress)
adds a DiagonalMatrix to the current *.mat file.
void get_(std::vector< T > &seq, matvar_t *&matvar)
Getter routine for an std::vector, i.e.
Class providing an output operator.
void get_(Real &scalar, matvar_t *&matvar)
Getter routine for a real scalar.
bool isInt_(matvar_t *var) const
Returns true if the variable is a int matlab object.
Definition: matfileIO.hh:717
void add_(const Array< Point< Cmplx, dim > > &array, const std::string &varName, enum matio_compression compress)
Add routine for a complex concepts::Array<concepts::Point>
void get_(ElementMatrix< T > &dense, matvar_t *&matvar)
Getter routine for a concepts::ElementMatrix.
void add(const T &u, const std::string varName, enum matio_compression compress=MAT_COMPRESSION_NONE)
Method to add various objects to a current open MatfileIO.
Definition: matfileIO.hh:160
double Real
Type normally used for a floating point number.
Definition: typedefs.hh:36
Exception class to handle errors in the matfileIO class.
Definition: matfileIO.hh:33
bool isOpen() const
Routine to check if a *.mat-file is currently open.
Definition: matfileIO.hh:281
void get_(Mapping< Real, dim > &map, matvar_t *&matvar)
Getter routine for a real concepts::Mapping.
void assertVar_(matvar_t *var) const
Throws an exception if the matvar pointer is Null use i.e.
Basic namespace for Concepts-2.
Definition: pml_formula.h:16
Page URL: http://wiki.math.ethz.ch/bin/view/Concepts/WebHome
21 August 2020
© 2020 Eidgenössische Technische Hochschule Zürich