Mercurial > repos > public > sbplib
annotate Map.m @ 603:d196b7cdc626 feature/grids
Respect end time in step mode
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Thu, 28 Sep 2017 11:17:15 +0200 |
parents | effd75b113ba |
children | a6c5e73ff44e |
rev | line source |
---|---|
414
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
1 classdef Map < handle |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
2 properties |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
3 map |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
4 end |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
5 |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
6 % can we support multi map using varargin? |
416 | 7 % probably a bad idea. For example it complicates keys(); |
414
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
8 |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
9 methods |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
10 function obj = Map() |
417
effd75b113ba
Add tests and fix a bunch of bugs.
Jonatan Werpers <jonatan@werpers.com>
parents:
416
diff
changeset
|
11 obj.map = containers.Map(); |
414
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
12 end |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
13 |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
14 function set(obj, k, v) |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
15 keyByteStream = getByteStreamFromArray(k); |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
16 |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
17 obj.map(char(keyByteStream)) = v; |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
18 end |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
19 |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
20 function v = get(obj, k) |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
21 keyByteStream = getByteStreamFromArray(k); |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
22 |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
23 v = obj.map(char(keyByteStream)); |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
24 end |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
25 |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
26 function b = isKey(obj, k) |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
27 keyByteStream = getByteStreamFromArray(k); |
417
effd75b113ba
Add tests and fix a bunch of bugs.
Jonatan Werpers <jonatan@werpers.com>
parents:
416
diff
changeset
|
28 b = obj.map.isKey(char(keyByteStream)); |
414
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
29 end |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
30 |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
31 function c = keys(obj) |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
32 keyByteStreams = obj.map.keys; |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
33 |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
34 n = length(keyByteStreams); |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
35 |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
36 c = cell(1, n); |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
37 for i = 1:n |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
38 c{i} = getArrayFromByteStream(uint8(keyByteStreams{i})); |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
39 end |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
40 end |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
41 |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
42 function l = length(obj) |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
43 l = obj.map.length; |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
44 end |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
45 |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
46 function remove(obj, k) |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
47 keyByteStream = getByteStreamFromArray(k); |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
48 obj.map.remove(char(keyByteStream)); |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
49 end |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
50 |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
51 function s = size(obj) |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
52 s = obj.map.size; |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
53 end |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
54 |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
55 function c = values(obj) |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
56 c = obj.map.values; |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
57 end |
415
16907bf31e67
Overload indexing operations.
Jonatan Werpers <jonatan@werpers.com>
parents:
414
diff
changeset
|
58 |
16907bf31e67
Overload indexing operations.
Jonatan Werpers <jonatan@werpers.com>
parents:
414
diff
changeset
|
59 function v = subsref(obj, S) |
417
effd75b113ba
Add tests and fix a bunch of bugs.
Jonatan Werpers <jonatan@werpers.com>
parents:
416
diff
changeset
|
60 switch S(1).type |
415
16907bf31e67
Overload indexing operations.
Jonatan Werpers <jonatan@werpers.com>
parents:
414
diff
changeset
|
61 case '()' |
417
effd75b113ba
Add tests and fix a bunch of bugs.
Jonatan Werpers <jonatan@werpers.com>
parents:
416
diff
changeset
|
62 k = S.subs{1}; |
415
16907bf31e67
Overload indexing operations.
Jonatan Werpers <jonatan@werpers.com>
parents:
414
diff
changeset
|
63 try |
417
effd75b113ba
Add tests and fix a bunch of bugs.
Jonatan Werpers <jonatan@werpers.com>
parents:
416
diff
changeset
|
64 v = get(obj, k); |
415
16907bf31e67
Overload indexing operations.
Jonatan Werpers <jonatan@werpers.com>
parents:
414
diff
changeset
|
65 catch ME |
16907bf31e67
Overload indexing operations.
Jonatan Werpers <jonatan@werpers.com>
parents:
414
diff
changeset
|
66 if strcmp(ME.identifier,'MATLAB:Containers:Map:NoKey') |
16907bf31e67
Overload indexing operations.
Jonatan Werpers <jonatan@werpers.com>
parents:
414
diff
changeset
|
67 error('Reference to non-existent entry %s',toString(S.subs)); |
16907bf31e67
Overload indexing operations.
Jonatan Werpers <jonatan@werpers.com>
parents:
414
diff
changeset
|
68 else |
16907bf31e67
Overload indexing operations.
Jonatan Werpers <jonatan@werpers.com>
parents:
414
diff
changeset
|
69 throw(ME); |
16907bf31e67
Overload indexing operations.
Jonatan Werpers <jonatan@werpers.com>
parents:
414
diff
changeset
|
70 end |
16907bf31e67
Overload indexing operations.
Jonatan Werpers <jonatan@werpers.com>
parents:
414
diff
changeset
|
71 end |
16907bf31e67
Overload indexing operations.
Jonatan Werpers <jonatan@werpers.com>
parents:
414
diff
changeset
|
72 otherwise |
417
effd75b113ba
Add tests and fix a bunch of bugs.
Jonatan Werpers <jonatan@werpers.com>
parents:
416
diff
changeset
|
73 try |
effd75b113ba
Add tests and fix a bunch of bugs.
Jonatan Werpers <jonatan@werpers.com>
parents:
416
diff
changeset
|
74 v = builtin('subsref', obj, S); |
effd75b113ba
Add tests and fix a bunch of bugs.
Jonatan Werpers <jonatan@werpers.com>
parents:
416
diff
changeset
|
75 catch e |
effd75b113ba
Add tests and fix a bunch of bugs.
Jonatan Werpers <jonatan@werpers.com>
parents:
416
diff
changeset
|
76 error('You can''t use dot notation for this because Matlab(TM). What is this piece of shit software anyway?') |
effd75b113ba
Add tests and fix a bunch of bugs.
Jonatan Werpers <jonatan@werpers.com>
parents:
416
diff
changeset
|
77 end |
415
16907bf31e67
Overload indexing operations.
Jonatan Werpers <jonatan@werpers.com>
parents:
414
diff
changeset
|
78 end |
16907bf31e67
Overload indexing operations.
Jonatan Werpers <jonatan@werpers.com>
parents:
414
diff
changeset
|
79 end |
16907bf31e67
Overload indexing operations.
Jonatan Werpers <jonatan@werpers.com>
parents:
414
diff
changeset
|
80 |
16907bf31e67
Overload indexing operations.
Jonatan Werpers <jonatan@werpers.com>
parents:
414
diff
changeset
|
81 function obj = subsasgn(obj, S, v); |
417
effd75b113ba
Add tests and fix a bunch of bugs.
Jonatan Werpers <jonatan@werpers.com>
parents:
416
diff
changeset
|
82 switch S(1).type |
415
16907bf31e67
Overload indexing operations.
Jonatan Werpers <jonatan@werpers.com>
parents:
414
diff
changeset
|
83 case '()' |
417
effd75b113ba
Add tests and fix a bunch of bugs.
Jonatan Werpers <jonatan@werpers.com>
parents:
416
diff
changeset
|
84 k = S.subs{1}; |
effd75b113ba
Add tests and fix a bunch of bugs.
Jonatan Werpers <jonatan@werpers.com>
parents:
416
diff
changeset
|
85 set(obj, k, v); |
415
16907bf31e67
Overload indexing operations.
Jonatan Werpers <jonatan@werpers.com>
parents:
414
diff
changeset
|
86 otherwise |
417
effd75b113ba
Add tests and fix a bunch of bugs.
Jonatan Werpers <jonatan@werpers.com>
parents:
416
diff
changeset
|
87 error('You can''t use dot notation because Matlab(TM). What is this piece of shit software anyway?') |
415
16907bf31e67
Overload indexing operations.
Jonatan Werpers <jonatan@werpers.com>
parents:
414
diff
changeset
|
88 end |
16907bf31e67
Overload indexing operations.
Jonatan Werpers <jonatan@werpers.com>
parents:
414
diff
changeset
|
89 end |
414
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
90 end |
50fd7e88aa74
Add a test implementation
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
91 end |