ultimatepp/bazaar/plugin/matio/matio.cpp
koldo 2c88c16903 Matio: Changed to namespace
git-svn-id: svn://ultimatepp.org/upp/trunk@13776 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2019-12-20 06:52:41 +00:00

73 lines
No EOL
1.7 KiB
C++

#include <Core/Core.h>
#include "matio.h"
#include "lib/matioConfig.h"
namespace Upp {
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() {
Close();
}
void MatFile::Close() {
if (mat != NULL) {
Mat_Close(mat);
mat = NULL;
}
}
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;
}
}