Mercurial > repos > public > sbplib
annotate SolutionFile.m @ 1037:2d7ba44340d0 feature/burgers1d
Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
author | Vidar Stiernström <vidar.stiernstrom@it.uu.se> |
---|---|
date | Fri, 18 Jan 2019 09:02:02 +0100 |
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 |