Mercurial > repos > public > sbplib
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 |
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 | |
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 | 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 | 41 function A = subsasgn(A, S, B) |
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 | 44 end |
45 | |
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 | 61 end |
62 | |
63 function C = horzcat(varargin) | |
64 dataArray = cell(1, length(varargin)); | |
65 | |
66 for i = 1:length(varargin) | |
67 dataArray{i} = varargin{i}.data; | |
68 end | |
69 | |
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 | 72 end |
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 | 75 dataArray = cell(1, length(varargin)); |
76 | |
77 for i = 1:length(varargin) | |
78 dataArray{i} = varargin{i}.data; | |
79 end | |
80 | |
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 | 83 end |
84 end | |
468
13362cf4dd89
Make the overloaded methods call the subclass constructor
Jonatan Werpers <jonatan@werpers.com>
parents:
467
diff
changeset
|
85 end |