Mercurial > repos > public > sbplib
annotate Map.m @ 577:e45c9b56d50d feature/grids
Add an Empty grid class
The need turned up for the flexural code when we may or may not have a grid for the open water and want to plot that solution.
In case there is no open water we need an empty grid to plot the empty gridfunction against to avoid errors.
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Thu, 07 Sep 2017 09:16:12 +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 |