aboutsummaryrefslogtreecommitdiff
path: root/matlab/+types/HashMap.m
diff options
context:
space:
mode:
authorJoel Martin <github@martintribe.org>2015-02-09 23:20:23 -0600
committerJoel Martin <github@martintribe.org>2015-02-10 01:46:17 -0600
commit6a572dff25a95f460d1b3c1b259c7a0a1f10c2d0 (patch)
treee680af55f0b6b02eaf86fb7a5a384b9b364c6942 /matlab/+types/HashMap.m
parent7f567f36457b937c36345becdb7c1101566dcdf3 (diff)
downloadmal-6a572dff25a95f460d1b3c1b259c7a0a1f10c2d0.tar.gz
mal-6a572dff25a95f460d1b3c1b259c7a0a1f10c2d0.zip
matlab: add keyword, vector, hash-map support.
Switch List to full object like vector and hash-map.
Diffstat (limited to 'matlab/+types/HashMap.m')
-rw-r--r--matlab/+types/HashMap.m47
1 files changed, 47 insertions, 0 deletions
diff --git a/matlab/+types/HashMap.m b/matlab/+types/HashMap.m
new file mode 100644
index 0000000..f48ba81
--- /dev/null
+++ b/matlab/+types/HashMap.m
@@ -0,0 +1,47 @@
+classdef HashMap < handle
+ properties
+ data = containers.Map();
+ meta = types.nil;
+ end
+ methods
+ function obj = HashMap(varargin)
+ if nargin == 0
+ obj.data = containers.Map();
+ else
+ obj.data = containers.Map(varargin(1:2:end), ...
+ varargin(2:2:end));
+ end
+ end
+
+ function len = length(obj)
+ len = length(obj.data);
+ end
+
+ function ret = get(obj, key)
+ ret = obj.data(key);
+ end
+
+ function ret = set(obj, key, val)
+ obj.data(key) = val;
+ ret = val;
+ end
+
+ function ret = keys(obj)
+ ret = obj.data.keys();
+ end
+
+ function ret = values(obj)
+ ret = obj.data.values();
+ end
+
+ function ret = clone(obj)
+ ret = types.HashMap();
+ if length(obj) > 0
+ ret.data = containers.Map(obj.data.keys(), obj.data.values());
+ else
+ ret.data = containers.Map();
+ end
+ ret.meta = obj.meta;
+ end
+ end
+end