annotate Cell.m @ 482:b90f8108ea5f feature/sublassable_cellarray

Remove disp and display methods
author Jonatan Werpers <jonatan@werpers.com>
date Wed, 02 Aug 2017 12:27:25 +0200
parents 970f1df2bfcf
children 025f084187d1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
467
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
1 classdef Cell
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
2 properties
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
3 data
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
4 end
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
5 methods
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
6 function obj = Cell(data)
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
7 if ~iscell(data)
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
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
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
10 end
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
11
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
12 obj.data = data;
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
13 end
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
14
480
4ce12f8b561c Implement to string method
Jonatan Werpers <jonatan@werpers.com>
parents: 479
diff changeset
15 function str = toString(obj)
4ce12f8b561c Implement to string method
Jonatan Werpers <jonatan@werpers.com>
parents: 479
diff changeset
16 str = sprintf('%s%s', class(obj), toString(obj.data));
4ce12f8b561c Implement to string method
Jonatan Werpers <jonatan@werpers.com>
parents: 479
diff changeset
17 end
473
605a8c075388 Add to string stub.
Jonatan Werpers <jonatan@werpers.com>
parents: 472
diff changeset
18
478
d91f27460741 Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents: 474
diff changeset
19 function s = size(A)
d91f27460741 Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents: 474
diff changeset
20 s = size(A.data);
d91f27460741 Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents: 474
diff changeset
21 end
d91f27460741 Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents: 474
diff changeset
22
d91f27460741 Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents: 474
diff changeset
23 function l = length(A)
d91f27460741 Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents: 474
diff changeset
24 l = length(A.data);
d91f27460741 Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents: 474
diff changeset
25 end
d91f27460741 Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents: 474
diff changeset
26
479
c5705458beb1 Implement end function and fix test for colon indexing
Jonatan Werpers <jonatan@werpers.com>
parents: 478
diff changeset
27 function ind = end(A,k,n)
c5705458beb1 Implement end function and fix test for colon indexing
Jonatan Werpers <jonatan@werpers.com>
parents: 478
diff changeset
28 ind = builtin('end',A.data, k, n);
c5705458beb1 Implement end function and fix test for colon indexing
Jonatan Werpers <jonatan@werpers.com>
parents: 478
diff changeset
29 end
c5705458beb1 Implement end function and fix test for colon indexing
Jonatan Werpers <jonatan@werpers.com>
parents: 478
diff changeset
30
478
d91f27460741 Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents: 474
diff changeset
31 function B = transpose(A)
d91f27460741 Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents: 474
diff changeset
32 b = A.data.';
d91f27460741 Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents: 474
diff changeset
33 B = callConstructor(A, b);
d91f27460741 Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents: 474
diff changeset
34 end
d91f27460741 Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents: 474
diff changeset
35
d91f27460741 Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents: 474
diff changeset
36 function B = ctranspose(A)
d91f27460741 Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents: 474
diff changeset
37 b = A.data';
d91f27460741 Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents: 474
diff changeset
38 B = callConstructor(A, b);
d91f27460741 Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents: 474
diff changeset
39 end
d91f27460741 Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents: 474
diff changeset
40
467
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
41 function A = subsasgn(A, S, B)
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
42 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
43 A = callConstructor(A, a);
467
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
44 end
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
45
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
46 function B = subsref(A, S)
469
365fcdbb8736 Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents: 468
diff changeset
47 switch S(1).type
365fcdbb8736 Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents: 468
diff changeset
48 case '()'
481
970f1df2bfcf Implement handeling of stacked indexing
Jonatan Werpers <jonatan@werpers.com>
parents: 480
diff changeset
49 b = subsref(A.data, S(1));
469
365fcdbb8736 Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents: 468
diff changeset
50 B = callConstructor(A, b);
481
970f1df2bfcf Implement handeling of stacked indexing
Jonatan Werpers <jonatan@werpers.com>
parents: 480
diff changeset
51 if length(S) > 1
970f1df2bfcf Implement handeling of stacked indexing
Jonatan Werpers <jonatan@werpers.com>
parents: 480
diff changeset
52 B = subsref(B,S(2:end));
970f1df2bfcf Implement handeling of stacked indexing
Jonatan Werpers <jonatan@werpers.com>
parents: 480
diff changeset
53 end
469
365fcdbb8736 Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents: 468
diff changeset
54 case '{}'
365fcdbb8736 Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents: 468
diff changeset
55 B = subsref(A.data, S);
365fcdbb8736 Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents: 468
diff changeset
56 case '.'
365fcdbb8736 Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents: 468
diff changeset
57 B = builtin('subsref',A, S);
365fcdbb8736 Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents: 468
diff changeset
58 otherwise
472
1dcac646c514 Add some missing semicolon
Jonatan Werpers <jonatan@werpers.com>
parents: 469
diff changeset
59 error('unreachable');
469
365fcdbb8736 Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents: 468
diff changeset
60 end
467
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
61 end
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
62
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
63 function C = horzcat(varargin)
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
64 dataArray = cell(1, length(varargin));
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
65
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
66 for i = 1:length(varargin)
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
67 dataArray{i} = varargin{i}.data;
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
68 end
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
69
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
70 c = horzcat(dataArray{:});
468
13362cf4dd89 Make the overloaded methods call the subclass constructor
Jonatan Werpers <jonatan@werpers.com>
parents: 467
diff changeset
71 C = callConstructor(varargin{1}, c);
467
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
72 end
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
73
474
c91464ef1dd9 Implement tests for horzcat and vertcat. Fix bugs found
Jonatan Werpers <jonatan@werpers.com>
parents: 473
diff changeset
74 function C = vertcat(varargin)
467
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
75 dataArray = cell(1, length(varargin));
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
76
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
77 for i = 1:length(varargin)
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
78 dataArray{i} = varargin{i}.data;
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
79 end
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
80
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
81 c = vertcat(dataArray{:});
468
13362cf4dd89 Make the overloaded methods call the subclass constructor
Jonatan Werpers <jonatan@werpers.com>
parents: 467
diff changeset
82 C = callConstructor(varargin{1}, c);
467
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
83 end
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
84 end
468
13362cf4dd89 Make the overloaded methods call the subclass constructor
Jonatan Werpers <jonatan@werpers.com>
parents: 467
diff changeset
85 end