Mercurial > repos > public > sbplib
annotate SolutionFile.m @ 750:43e64f5b388e feature/grids
Add missing semicolon in multiblock.Laplace
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Mon, 04 Jun 2018 17:48:19 +0200 |
parents | 8298734b1938 |
children |
rev | line source |
---|---|
9
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
1 classdef SolutionFile < handle |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
2 properties |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
3 filename |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
4 matfile |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
5 keys % Cell array of keys. Each key is a structure |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
6 % entries |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
7 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
8 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
9 methods |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
10 function obj = SolutionFile(filename) |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
11 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
12 obj.filename = filename; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
13 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
14 is_new_file = ~exist(filename,'file'); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
15 |
32
ddfb98209aa2
Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
24
diff
changeset
|
16 % obj.matfile = matfile(filename,'Writable',true); |
ddfb98209aa2
Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
24
diff
changeset
|
17 fprintf('MATLAB SUCKS!!!!\n') |
9
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
18 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
19 if is_new_file |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
20 obj.matfile.keys = {}; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
21 obj.matfile.entries = {}; |
32
ddfb98209aa2
Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
24
diff
changeset
|
22 else |
35
61367018c46f
Stoped using matFile object in SolutionFile. Changed to load for performance.
Jonatan Werpers <jonatan@werpers.com>
parents:
32
diff
changeset
|
23 loadStruct = load(filename); |
61367018c46f
Stoped using matFile object in SolutionFile. Changed to load for performance.
Jonatan Werpers <jonatan@werpers.com>
parents:
32
diff
changeset
|
24 obj.matfile.keys = loadStruct.keys; |
61367018c46f
Stoped using matFile object in SolutionFile. Changed to load for performance.
Jonatan Werpers <jonatan@werpers.com>
parents:
32
diff
changeset
|
25 obj.matfile.entries = loadStruct.entries; |
61367018c46f
Stoped using matFile object in SolutionFile. Changed to load for performance.
Jonatan Werpers <jonatan@werpers.com>
parents:
32
diff
changeset
|
26 |
61367018c46f
Stoped using matFile object in SolutionFile. Changed to load for performance.
Jonatan Werpers <jonatan@werpers.com>
parents:
32
diff
changeset
|
27 % matObj = matfile(filename,'Writable',true); |
61367018c46f
Stoped using matFile object in SolutionFile. Changed to load for performance.
Jonatan Werpers <jonatan@werpers.com>
parents:
32
diff
changeset
|
28 % obj.matfile.keys = matObj.keys; |
61367018c46f
Stoped using matFile object in SolutionFile. Changed to load for performance.
Jonatan Werpers <jonatan@werpers.com>
parents:
32
diff
changeset
|
29 % obj.matfile.entries = matObj.entries; |
9
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
30 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
31 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
32 obj.keys = obj.matfile.keys; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
33 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
34 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
35 |
32
ddfb98209aa2
Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
24
diff
changeset
|
36 function stupidSave(obj) |
136
8298734b1938
Updated noname.calculateSolution to use the opt struct.
Jonatan Werpers <jonatan@werpers.com>
parents:
46
diff
changeset
|
37 % Read file contents |
32
ddfb98209aa2
Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
24
diff
changeset
|
38 matObj = matfile(obj.filename,'Writable',true); |
ddfb98209aa2
Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
24
diff
changeset
|
39 |
ddfb98209aa2
Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
24
diff
changeset
|
40 keys = obj.matfile.keys; |
ddfb98209aa2
Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
24
diff
changeset
|
41 entries = obj.matfile.entries; |
ddfb98209aa2
Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
24
diff
changeset
|
42 |
136
8298734b1938
Updated noname.calculateSolution to use the opt struct.
Jonatan Werpers <jonatan@werpers.com>
parents:
46
diff
changeset
|
43 % Delete the file |
35
61367018c46f
Stoped using matFile object in SolutionFile. Changed to load for performance.
Jonatan Werpers <jonatan@werpers.com>
parents:
32
diff
changeset
|
44 if exist(obj.filename,'file') |
61367018c46f
Stoped using matFile object in SolutionFile. Changed to load for performance.
Jonatan Werpers <jonatan@werpers.com>
parents:
32
diff
changeset
|
45 delete(obj.filename); |
61367018c46f
Stoped using matFile object in SolutionFile. Changed to load for performance.
Jonatan Werpers <jonatan@werpers.com>
parents:
32
diff
changeset
|
46 end |
32
ddfb98209aa2
Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
24
diff
changeset
|
47 |
136
8298734b1938
Updated noname.calculateSolution to use the opt struct.
Jonatan Werpers <jonatan@werpers.com>
parents:
46
diff
changeset
|
48 % Rewrite the file |
32
ddfb98209aa2
Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
24
diff
changeset
|
49 matObj = matfile(obj.filename,'Writable',true); |
ddfb98209aa2
Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
24
diff
changeset
|
50 matObj.keys = keys; |
ddfb98209aa2
Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
24
diff
changeset
|
51 matObj.entries = entries; |
ddfb98209aa2
Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
24
diff
changeset
|
52 end |
ddfb98209aa2
Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
24
diff
changeset
|
53 |
9
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
54 function list(obj, show_syntax) |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
55 default_arg('show_syntax',false); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
56 for i = 1:length(obj.keys) |
46
dd4db0c97a02
Updated SolutionFile to use the new toString Method.
Jonatan Werpers <jonatan@werpers.com>
parents:
35
diff
changeset
|
57 fprintf('[%d]: %s', i, toString(obj.keys{i})); |
9
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
58 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
59 if show_syntax |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
60 fprintf('\t%s',struct2syntax(obj.keys{i})); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
61 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
62 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
63 fprintf('\n'); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
64 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
65 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
66 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
67 % Returns the index for a key. Returns 0 if the key doesn't exist |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
68 function I = getIndex(obj, key) |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
69 I = 0; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
70 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
71 for i = 1:length(obj.keys) |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
72 if isequal(key,obj.keys{i}); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
73 I = i; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
74 return |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
75 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
76 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
77 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
78 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
79 function b = isKey(obj, key) |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
80 I = obj.getIndex(key); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
81 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
82 if I == 0 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
83 b = false; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
84 else |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
85 b = true; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
86 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
87 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
88 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
89 % Gets entries where key match exactly. |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
90 function e = get(obj, key) |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
91 if ~obj.isKey(key); |
35
61367018c46f
Stoped using matFile object in SolutionFile. Changed to load for performance.
Jonatan Werpers <jonatan@werpers.com>
parents:
32
diff
changeset
|
92 key |
9
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
93 error('No such key: %s', struct2string(key)); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
94 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
95 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
96 I = obj.getIndex(key); |
19
1644d000c304
Fixed bug in SolutionsFile.m. Updated calculateSolution to also save a function handle to the Discr constructor.
Jonatan Werpers <jonatan@werpers.com>
parents:
18
diff
changeset
|
97 e = obj.getEntryByIndex(I); % unpack the cell array |
9
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
98 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
99 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
100 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
101 % Handles indexing weirdness of matfile class |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
102 function e = getEntryByIndex(obj, I) |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
103 e = obj.matfile.entries(1,I); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
104 e = e{1}; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
105 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
106 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
107 function e = deleteByIndex(obj, I) |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
108 obj.keys(I) = []; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
109 obj.matfile.keys = obj.keys; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
110 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
111 entries = obj.matfile.entries; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
112 entries(I) = []; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
113 obj.matfile.entries = entries; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
114 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
115 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
116 % Handles indexing weirdness of matfile class |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
117 function setEntryByIndex(obj,I, entry, force_flag) |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
118 default_arg('force_flag',false); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
119 if ~force_flag && ( I < 1 || I > length(obj.keys)) |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
120 error('I is out of range. I = %d',I); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
121 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
122 obj.matfile.entries(1,I) = {entry}; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
123 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
124 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
125 function store(obj, key, entry) |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
126 if obj.isKey(key); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
127 I = obj.getIndex(key); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
128 else |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
129 I = length(obj.keys) + 1; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
130 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
131 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
132 obj.keys{I} = key; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
133 obj.matfile.keys = obj.keys; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
134 obj.setEntryByIndex(I,entry,true); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
135 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
136 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
137 function delete(obj, key) |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
138 if ~obj.isKey(key); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
139 error('No such key: %s', struct2string(key)); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
140 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
141 I = obj.getIndex(key); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
142 obj.deleteByIndex(I); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
143 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
144 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
145 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
146 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
147 % Gets entries where the defined parts of partial_key matches the key of the entry |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
148 function [keys, entries] = find(obj,partial_key) |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
149 keys = {}; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
150 entries = {}; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
151 for i = 1:length(obj.keys) |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
152 if structIsSubset(partial_key,obj.keys{i}) |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
153 i |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
154 obj.keys{i} |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
155 keys{end + 1} = obj.keys{i}; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
156 entries{end + 1} = obj.getEntryByIndex(i); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
157 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
158 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
159 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
160 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
161 |
18
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
162 methods(Static) |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
163 function merge(fn1, fn2, fnNew) |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
164 sf1 = SolutionFile(fn1); |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
165 sf2 = SolutionFile(fn2); |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
166 |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
167 sfNew = SolutionFile(fnNew); |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
168 |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
169 sfNew.keys = sf1.keys; |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
170 sfNew.matfile.keys = sf1.keys; |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
171 sfNew.matfile.entries = sf1.matfile.entries; |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
172 |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
173 for i = 1:length(sf2.keys) |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
174 if sfNew.isKey(sf2.keys{i}) |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
175 warning('Key ''%s'' exists in both files!',struct2string(sf2.keys{i})); |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
176 end |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
177 sfNew.store(sf2.keys{i},sf2.getEntryByIndex(i)); |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
178 end |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
179 end |
24
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
180 |
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
181 |
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
182 function b = keyIsEqual(key1,key2) |
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
183 b = isequal(key1, key2); |
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
184 end |
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
185 |
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
186 function b = keyIsIn(key,keys) |
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
187 b = false; |
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
188 for i = 1:length(keys) |
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
189 b = isequal(key, keys{i}); |
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
190 if b |
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
191 return |
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
192 end |
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
193 end |
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
194 end |
18
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
195 end |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
196 |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
197 end |