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