aboutsummaryrefslogtreecommitdiff
path: root/matlab/+types/HashMap.m
blob: f48ba813a3c615a67da61468cfe8aee981651ed1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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