Mercurial > repos > public > sbplib
annotate Cell.m @ 473:605a8c075388 feature/sublassable_cellarray
Add to string stub.
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Wed, 02 Aug 2017 09:34:45 +0200 |
parents | 1dcac646c514 |
children | c91464ef1dd9 |
rev | line source |
---|---|
467 | 1 classdef Cell |
2 properties | |
3 data | |
4 end | |
5 methods | |
6 function obj = Cell(data) | |
7 if ~iscell(data) | |
8 class(data) | |
472
1dcac646c514
Add some missing semicolon
Jonatan Werpers <jonatan@werpers.com>
parents:
469
diff
changeset
|
9 error('Input argument to Cell must be a cell array'); |
467 | 10 end |
11 | |
12 obj.data = data; | |
13 end | |
14 | |
473 | 15 % function str = toString(obj) |
16 | |
17 % end | |
18 | |
467 | 19 % function display(A) |
20 % n = size(A.data); | |
21 | |
22 % sizeStr = join(cellfun(@num2str, num2cell(n), 'UniformOutput',false),'x'); | |
23 % header = [sizeStr, 'Cell'] | |
24 | |
25 % disp() | |
26 % disp(A.data) | |
27 % % display(A.data) | |
28 % end | |
29 | |
30 function disp(A) | |
31 disp(A.data) | |
32 end | |
33 | |
34 function A = subsasgn(A, S, B) | |
35 a = subsasgn(A.data, S, B); | |
468
13362cf4dd89
Make the overloaded methods call the subclass constructor
Jonatan Werpers <jonatan@werpers.com>
parents:
467
diff
changeset
|
36 A = callConstructor(A, a); |
467 | 37 end |
38 | |
39 function B = subsref(A, S) | |
469
365fcdbb8736
Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents:
468
diff
changeset
|
40 switch S(1).type |
365fcdbb8736
Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents:
468
diff
changeset
|
41 case '()' |
365fcdbb8736
Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents:
468
diff
changeset
|
42 b = subsref(A.data, S); |
365fcdbb8736
Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents:
468
diff
changeset
|
43 B = callConstructor(A, b); |
365fcdbb8736
Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents:
468
diff
changeset
|
44 case '{}' |
365fcdbb8736
Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents:
468
diff
changeset
|
45 B = subsref(A.data, S); |
365fcdbb8736
Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents:
468
diff
changeset
|
46 case '.' |
365fcdbb8736
Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents:
468
diff
changeset
|
47 B = builtin('subsref',A, S); |
365fcdbb8736
Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents:
468
diff
changeset
|
48 otherwise |
472
1dcac646c514
Add some missing semicolon
Jonatan Werpers <jonatan@werpers.com>
parents:
469
diff
changeset
|
49 error('unreachable'); |
469
365fcdbb8736
Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents:
468
diff
changeset
|
50 end |
467 | 51 end |
52 | |
53 function C = horzcat(varargin) | |
54 dataArray = cell(1, length(varargin)); | |
55 | |
56 for i = 1:length(varargin) | |
57 dataArray{i} = varargin{i}.data; | |
58 end | |
59 | |
60 c = horzcat(dataArray{:}); | |
468
13362cf4dd89
Make the overloaded methods call the subclass constructor
Jonatan Werpers <jonatan@werpers.com>
parents:
467
diff
changeset
|
61 C = callConstructor(varargin{1}, c); |
467 | 62 end |
63 | |
64 function vertcat(varargin) | |
65 dataArray = cell(1, length(varargin)); | |
66 | |
67 for i = 1:length(varargin) | |
68 dataArray{i} = varargin{i}.data; | |
69 end | |
70 | |
71 c = vertcat(dataArray{:}); | |
468
13362cf4dd89
Make the overloaded methods call the subclass constructor
Jonatan Werpers <jonatan@werpers.com>
parents:
467
diff
changeset
|
72 C = callConstructor(varargin{1}, c); |
467 | 73 end |
74 end | |
468
13362cf4dd89
Make the overloaded methods call the subclass constructor
Jonatan Werpers <jonatan@werpers.com>
parents:
467
diff
changeset
|
75 end |