Skip to content
Snippets Groups Projects

Documentation

Merged Daniel Hornung requested to merge f-doc into dev
All threads resolved!
Files
6
+ 25
22
@@ -253,24 +253,27 @@ auto mxFromCaosDBMessages(const ce::Messages &messages) -> mxArray * {
auto mxFromDataType(const ce::DataType &data_type) -> mxArray * {
namespace ce = ce;
auto is_list = mxScalarLOGICAL(data_type.IsList());
mxArray *dtype_name;
mxArray *is_reference;
auto is_list = mxScalarLOGICAL(data_type.IsList());
auto is_reference = mxScalarLOGICAL(data_type.IsReference());
if (data_type.IsList()) {
const auto &list_datatype = data_type.AsList();
const auto &list_datatype = data_type.GetAsList();
is_reference = mxScalarLOGICAL(list_datatype.IsListOfReference());
if (list_datatype.IsListOfReference()) {
dtype_name = mxCreateString(list_datatype.GetReferenceDataType().GetName().c_str());
} else {
} else if (list_datatype.IsListOfAtomic()) {
dtype_name = mxEnumToString<ce::AtomicDataType>(list_datatype.GetAtomicDataType());
}
} else {
is_reference = mxScalarLOGICAL(data_type.IsReference());
if (data_type.IsReference()) {
dtype_name = mxCreateString(data_type.AsReference().GetName().c_str());
} else {
dtype_name = mxEnumToString<ce::AtomicDataType>(data_type.AsAtomic());
throw std::logic_error(string("Unexpected data type: " + data_type.ToString()));
}
} else if (data_type.IsReference()) {
dtype_name = mxCreateString(data_type.GetAsReference().GetName().c_str());
} else if (data_type.IsAtomic()) {
dtype_name = mxEnumToString<ce::AtomicDataType>(data_type.GetAsAtomic());
} else if (data_type.ToString() == "{}") {
return mxEmptySparse(); // Workaround to denote a Null value: sparse array
} else {
throw std::logic_error(string("Unexpected data type: " + data_type.ToString()));
}
// clang-format off
@@ -295,18 +298,18 @@ auto mxFromValue(const ce::Value &value) -> mxArray * {
if (value.IsNull()) {
return mxEmptySparse(); // Workaround to denote a Null value: sparse array
} else if (value.IsString()) { // Scalars are converted to normal arrays.
return mxCreateString(value.AsString().c_str());
return mxCreateString(value.GetAsString().c_str());
} else if (value.IsDouble()) {
return mxScalarDOUBLE(value.AsDouble());
return mxScalarDOUBLE(value.GetAsDouble());
} else if (value.IsBool()) {
return mxScalarLOGICAL(value.AsBool());
} else if (value.IsInteger()) {
return mxScalarINT64(value.AsInteger());
} else if (!value.IsList()) {
return mxScalarLOGICAL(value.GetAsBool());
} else if (value.IsInt64()) {
return mxScalarINT64(value.GetAsInt64());
} else if (!value.IsVector()) {
throw std::logic_error(string("Unexpected value type: " + value.ToString()));
}
// It's a list now -> convert to cell array always.
auto list = value.AsList();
auto list = value.GetAsVector();
auto *result = mxCreateCellArray(0, (mwSize *)nullptr);
if (list.empty()) { // Empty list: empty cell array
return result;
@@ -316,25 +319,25 @@ auto mxFromValue(const ce::Value &value) -> mxArray * {
if (list_value.IsString()) { // String
result = mxCreateCellArray(2, dims.data());
for (size_t i = 0; i < list.size(); ++i) {
mxSetCell(result, i, mxCreateString(list[i].AsString().c_str()));
mxSetCell(result, i, mxCreateString(list[i].GetAsString().c_str()));
}
} else if (list_value.IsBool()) { // Bool
result = mxCreateLogicalArray(2, dims.data());
auto *data = static_cast<mxLogical *>(mxGetData(result));
for (size_t i = 0; i < list.size(); ++i) {
data[i] = list[i].AsBool();
data[i] = list[i].GetAsBool();
}
} else if (list_value.IsInteger()) { // Int
} else if (list_value.IsInt64()) { // Int
result = mxCreateNumericArray(2, dims.data(), mxINT64_CLASS, mxREAL);
auto *data = static_cast<INT64_T *>(mxGetData(result));
for (size_t i = 0; i < list.size(); ++i) {
data[i] = list[i].AsInteger();
data[i] = list[i].GetAsInt64();
}
} else if (list_value.IsDouble()) { // Double
result = mxCreateNumericArray(2, dims.data(), mxDOUBLE_CLASS, mxREAL);
auto *data = static_cast<double *>(mxGetData(result));
for (size_t i = 0; i < list.size(); ++i) {
data[i] = list[i].AsInteger();
data[i] = list[i].GetAsDouble();
}
} else {
throw std::logic_error("Unexpected list value type");
Loading