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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
e97550b5c1e7 Add todo.
Jonatan Werpers <jonatan@werpers.com>
parents: 415
diff changeset
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