Mercurial > repos > public > sbplib
diff Map.m @ 417:effd75b113ba feature/better_map
Add tests and fix a bunch of bugs.
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Thu, 02 Feb 2017 20:49:06 +0100 |
parents | e97550b5c1e7 |
children | a6c5e73ff44e |
line wrap: on
line diff
--- a/Map.m Thu Feb 02 16:41:41 2017 +0100 +++ b/Map.m Thu Feb 02 20:49:06 2017 +0100 @@ -8,7 +8,7 @@ methods function obj = Map() - obj.map = containers.Map() + obj.map = containers.Map(); end function set(obj, k, v) @@ -25,7 +25,7 @@ function b = isKey(obj, k) keyByteStream = getByteStreamFromArray(k); - b = obj.map.isKey(keyByteStream); + b = obj.map.isKey(char(keyByteStream)); end function c = keys(obj) @@ -57,11 +57,11 @@ end function v = subsref(obj, S) - switch S.type + switch S(1).type case '()' - k = S.subs; + k = S.subs{1}; try - v = obj.get(k); + v = get(obj, k); catch ME if strcmp(ME.identifier,'MATLAB:Containers:Map:NoKey') error('Reference to non-existent entry %s',toString(S.subs)); @@ -70,17 +70,21 @@ end end otherwise - v = builtin('subsref', obj, S); + try + v = builtin('subsref', obj, S); + catch e + error('You can''t use dot notation for this because Matlab(TM). What is this piece of shit software anyway?') + end end end function obj = subsasgn(obj, S, v); - switch S.type + switch S(1).type case '()' - k = S.subs; - obj.set(k, v); + k = S.subs{1}; + set(obj, k, v); otherwise - error('Unsupported indexing operator: %s',S.type); + error('You can''t use dot notation because Matlab(TM). What is this piece of shit software anyway?') end end end