Skip to content

Commit ecbabe5

Browse files
committed
added SetDimension in matlab + some removed unused methods
1 parent 7efefbe commit ecbabe5

File tree

5 files changed

+34
-70
lines changed

5 files changed

+34
-70
lines changed

+nix/DataArray.m

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@
44
properties (Hidden)
55
% namespace reference for nix-mx functions
66
alias = 'DataArray'
7+
dimsCache
78
end
8-
9+
910
properties(Dependent)
1011
dimensions % should not be dynamic due to complex set operation
1112
end;
@@ -22,10 +23,21 @@
2223
nix.Dynamic.add_dyn_attr(obj, 'expansionOrigin', 'rw');
2324
nix.Dynamic.add_dyn_attr(obj, 'polynom_coefficients', 'rw');
2425
nix.Dynamic.add_dyn_attr(obj, 'shape', 'rw');
26+
27+
obj.dimsCache = nix.CacheStruct();
2528
end;
2629

2730
function dimensions = get.dimensions(obj)
28-
dimensions = obj.info.dimensions;
31+
if obj.dimsCache.lastUpdate ~= obj.updatedAt
32+
currList = nix_mx('DataArray::dimensions', obj.nix_handle);
33+
obj.dimsCache.data = cell(length(currList), 1);
34+
for i = 1:length(currList)
35+
% TODO convert to a proper type
36+
obj.dimsCache.data{i} = nix.SetDimension(currList{i});
37+
end;
38+
obj.dimsCache.lastUpdate = obj.updatedAt;
39+
end;
40+
dimensions = obj.dimsCache.data;
2941
end;
3042

3143
% -----------------

+nix/SetDimension.m

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
classdef SetDimension < nix.Entity
2+
%SetDimension nix SetDimension object
3+
4+
properties (Hidden)
5+
% namespace reference for nix-mx functions
6+
alias = 'SetDimension'
7+
end
8+
9+
methods
10+
function obj = SetDimension(h)
11+
12+
end
13+
14+
function ua = updatedAt(obj)
15+
ua = 0;
16+
end;
17+
end
18+
end
19+

src/nixdataarray.cc

Lines changed: 1 addition & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ namespace nixdataarray {
1515
mxArray *describe(const nix::DataArray &da)
1616
{
1717
struct_builder sb({ 1 }, { "id", "type", "name", "definition", "label",
18-
"shape", "unit", "dimensions", "polynom_coefficients" });
18+
"shape", "unit", "polynom_coefficients" });
1919

2020
sb.set(da.id());
2121
sb.set(da.type());
@@ -24,31 +24,6 @@ namespace nixdataarray {
2424
sb.set(da.label());
2525
sb.set(da.dataExtent());
2626
sb.set(da.unit());
27-
28-
size_t ndims = da.dimensionCount();
29-
30-
mxArray *dims = mxCreateCellMatrix(1, ndims);
31-
std::vector<nix::Dimension> da_dims = da.dimensions();
32-
33-
for (size_t i = 0; i < ndims; i++) {
34-
mxArray *ca;
35-
36-
switch (da_dims[i].dimensionType()) {
37-
case nix::DimensionType::Set:
38-
ca = dim_to_struct(da_dims[i].asSetDimension());
39-
break;
40-
case nix::DimensionType::Range:
41-
ca = dim_to_struct(da_dims[i].asRangeDimension());
42-
break;
43-
case nix::DimensionType::Sample:
44-
ca = dim_to_struct(da_dims[i].asSampledDimension());
45-
break;
46-
}
47-
48-
mxSetCell(dims, i, ca);
49-
}
50-
51-
sb.set(dims);
5227
sb.set(da.polynomCoefficients());
5328

5429
return sb.array();

src/utils/nix2mx.cc

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -25,42 +25,6 @@ mxArray *nmCreateScalar(uint32_t val) {
2525
return arr;
2626
}
2727

28-
mxArray *dim_to_struct(nix::SetDimension dim) {
29-
30-
struct_builder sb({ 1 }, { "type", "type_id", "labels" });
31-
32-
sb.set("set");
33-
sb.set(1);
34-
sb.set(dim.labels());
35-
36-
return sb.array();
37-
}
38-
39-
mxArray *dim_to_struct(nix::SampledDimension dim) {
40-
41-
struct_builder sb({ 1 }, { "type", "type_id", "interval", "label", "unit" });
42-
43-
sb.set("sampled");
44-
sb.set(2);
45-
sb.set(dim.samplingInterval());
46-
sb.set(dim.label());
47-
sb.set(dim.unit());
48-
49-
return sb.array();
50-
}
51-
52-
mxArray *dim_to_struct(nix::RangeDimension dim) {
53-
54-
struct_builder sb({ 1 }, { "type", "type_id", "ticks", "unit" });
55-
56-
sb.set("range");
57-
sb.set(3);
58-
sb.set(dim.ticks());
59-
sb.set(dim.unit());
60-
61-
return sb.array();
62-
}
63-
6428
nix::NDSize mx_array_to_ndsize(const mxArray *arr) {
6529

6630
size_t m = mxGetM(arr);

src/utils/nix2mx.h

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,4 @@ nix::Value mx_array_to_value(const mxArray *arr);
2020

2121
mxArray *nmCreateScalar(uint32_t val);
2222

23-
mxArray *dim_to_struct(nix::SetDimension dim);
24-
25-
mxArray *dim_to_struct(nix::SampledDimension dim);
26-
27-
mxArray *dim_to_struct(nix::RangeDimension dim);
28-
2923
#endif

0 commit comments

Comments
 (0)