Mercurial > repos > public > sbplib
annotate Dictionary.m @ 1198:2924b3a9b921 feature/d2_compatible
Add OpSet for fully compatible D2Variable, created from regular D2Variable by replacing d1 by first row of D1. Formal reduction by one order of accuracy at the boundary point.
author | Martin Almquist <malmquist@stanford.edu> |
---|---|
date | Fri, 16 Aug 2019 14:30:28 -0700 |
parents | ba0fee896b41 |
children |
rev | line source |
---|---|
40
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
1 % TODO |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
2 % Documentation |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
3 % Should the storage be done in some other way? |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
4 % Cell array as keys? |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
5 % Some possibility to load and save to a matfile? |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
6 % May be load and save from outside is enough. |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
7 % Get and set functions called by subsref and subsasgn? |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
8 % Unit tests. |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
9 |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
10 |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
11 classdef Dictionary |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
12 properties |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
13 store |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
14 end |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
15 |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
16 methods |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
17 function obj = Dictionary() |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
18 obj.store = struct(); |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
19 end |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
20 |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
21 function s = getStore(obj) |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
22 s = obj.store; |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
23 end |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
24 |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
25 function display(obj) |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
26 if length(fieldnames(obj.store)) == 0 |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
27 fprintf('%s is an empty Dictionary\n',inputname(1)); |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
28 return |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
29 end |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
30 |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
31 lineformat = [inputname(1) '(%s) = %s\n']; |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
32 |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
33 display_impl(obj.store,''); |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
34 |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
35 function display_impl(s, path) |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
36 if ~isstruct(s) |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
37 fprintf(lineformat,path(3:end), value2str(s)); |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
38 % fprintf(') = %s\n', value2str(s)); |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
39 % fprintf('%s(', objName); |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
40 return |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
41 end |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
42 |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
43 fn = fieldnames(s); |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
44 |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
45 for i = 1:length(fn) |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
46 display_impl(s.(fn{i}), [path ', ' fn{i}(2:end)]); |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
47 end |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
48 |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
49 end |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
50 |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
51 function str = value2str(val) |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
52 if isnumeric(val) || ischar(val) |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
53 str = mat2str(val); |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
54 else |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
55 str = class(val); |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
56 end |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
57 end |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
58 end |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
59 |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
60 % B = obj(i) |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
61 function B = subsref(obj,S) |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
62 switch S.type |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
63 case '()' |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
64 Sf = obj.subs2dotSubs(S); |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
65 try |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
66 B = subsref(obj.store,Sf); |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
67 catch ME |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
68 if strcmp(ME.identifier,'MATLAB:nonExistentField') |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
69 error('Reference to non-existent entry %s',toString(S.subs)); |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
70 else |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
71 throw(ME); |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
72 end |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
73 end |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
74 otherwise |
136
8298734b1938
Updated noname.calculateSolution to use the opt struct.
Jonatan Werpers <jonatan@werpers.com>
parents:
40
diff
changeset
|
75 B = builtin('subsref', obj, S); |
8298734b1938
Updated noname.calculateSolution to use the opt struct.
Jonatan Werpers <jonatan@werpers.com>
parents:
40
diff
changeset
|
76 % error('Unsupported indexing operator: %s',S.type); |
40
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
77 end |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
78 end |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
79 |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
80 % A(i) = B |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
81 function obj = subsasgn(obj,S,B); |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
82 switch S.type |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
83 case '()' |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
84 Sf = obj.subs2dotSubs(S); |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
85 obj.store = subsasgn(obj.store,Sf,B); |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
86 otherwise |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
87 error('Unsupported indexing operator: %s',S.type); |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
88 end |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
89 end |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
90 |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
91 function Sf = subs2dotSubs(obj,S) |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
92 for i = 1:length(S.subs) |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
93 Sf(i).type = '.'; |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
94 Sf(i).subs = obj.getFieldname(S.subs{i}); |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
95 end |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
96 end |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
97 |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
98 % Should probably use mat2str with some kind of normalization to make all variables valied fieldname |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
99 % and make it possible to recover the value |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
100 function fName = getFieldname(obj, val) |
331
ba0fee896b41
Made dictionary more general.
Jonatan Werpers <jonatan@werpers.com>
parents:
136
diff
changeset
|
101 if ~ischar(val) |
ba0fee896b41
Made dictionary more general.
Jonatan Werpers <jonatan@werpers.com>
parents:
136
diff
changeset
|
102 val = toString(val); |
40
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
103 end |
331
ba0fee896b41
Made dictionary more general.
Jonatan Werpers <jonatan@werpers.com>
parents:
136
diff
changeset
|
104 |
ba0fee896b41
Made dictionary more general.
Jonatan Werpers <jonatan@werpers.com>
parents:
136
diff
changeset
|
105 fName = matlab.lang.makeValidName(val); |
40
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
106 end |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
107 end |
54d3ab296ba0
Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
108 end |