ultimatepp/bazaar/plugin/matio/matio.cpp
koldo b7dbe933a7 Added complex numbers
git-svn-id: svn://ultimatepp.org/upp/trunk@13379 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2019-06-10 15:34:56 +00:00

67 lines
No EOL
1.6 KiB
C++

#include <Core/Core.h>
using namespace Upp;
#include "matio.h"
#include "lib/matioConfig.h"
MatFile::MatStatic MatFile::cons;
MatVar::~MatVar() {
if (var != NULL && del)
Mat_VarFree(var);
}
MatVar::MatVar(mat_t *mat, String name) {
ASSERT(mat != NULL);
del = true;
var = Mat_VarReadInfo(mat, name);
if (var == NULL)
return;
}
const char* MatVar::GetTypeString() {
ASSERT(var != NULL);
const char *class_type_desc[18] = {"Undefined","Cell Array","Structure",
"Object","Character Array","Sparse Array","Double Precision Array",
"Single Precision Array", "8-bit, signed integer array",
"8-bit, unsigned integer array","16-bit, signed integer array",
"16-bit, unsigned integer array","32-bit, signed integer array",
"32-bit, unsigned integer array","64-bit, signed integer array",
"64-bit, unsigned integer array","Function","Opaque"};
return class_type_desc[var->class_type];
}
int MatVar::GetCount() {
ASSERT(var != NULL);
int ret = GetDimCount(0);
for (int i = 1; i < GetDimCount(); ++i)
ret *= GetDimCount(i);
return ret;
}
MatFile::~MatFile() {
if (mat != NULL)
Mat_Close(mat);
}
bool MatFile::Create(String fileName, mat_ft version) {
if (mat != NULL)
Mat_Close(mat);
time_t t = time(NULL);
String header = Format("MATLAB 5.0 MAT-file, Platform: %s, "
"Created by: libmatio v%d.%d.%d on %s. U++ wrapper Bazaar/plugin/matio <https://www.ultimatepp.org/>", MATIO_PLATFORM,
MATIO_MAJOR_VERSION, MATIO_MINOR_VERSION, MATIO_RELEASE_LEVEL,
ctime(&t));
mat = Mat_CreateVer(fileName, header, version);
return !!mat;
}