Mercurial > repos > public > sbplib
annotate SolutionFile.m @ 89:53fe4b64f65e
Minor cleaning of Wave2dCurve.
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Mon, 30 Nov 2015 12:20:22 +0100 |
parents | dd4db0c97a02 |
children | 8298734b1938 |
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) |
ddfb98209aa2
Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
24
diff
changeset
|
37 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
|
38 |
ddfb98209aa2
Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
24
diff
changeset
|
39 keys = obj.matfile.keys; |
ddfb98209aa2
Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
24
diff
changeset
|
40 entries = obj.matfile.entries; |
ddfb98209aa2
Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
24
diff
changeset
|
41 |
35
61367018c46f
Stoped using matFile object in SolutionFile. Changed to load for performance.
Jonatan Werpers <jonatan@werpers.com>
parents:
32
diff
changeset
|
42 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
|
43 delete(obj.filename); |
61367018c46f
Stoped using matFile object in SolutionFile. Changed to load for performance.
Jonatan Werpers <jonatan@werpers.com>
parents:
32
diff
changeset
|
44 end |
32
ddfb98209aa2
Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
24
diff
changeset
|
45 |
ddfb98209aa2
Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
24
diff
changeset
|
46 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
|
47 matObj.keys = keys; |
ddfb98209aa2
Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
24
diff
changeset
|
48 matObj.entries = entries; |
ddfb98209aa2
Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
24
diff
changeset
|
49 end |
ddfb98209aa2
Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
24
diff
changeset
|
50 |
9
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
51 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
|
52 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
|
53 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
|
54 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
|
55 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
56 if show_syntax |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
57 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
|
58 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
59 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
60 fprintf('\n'); |
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 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
63 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
64 % 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
|
65 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
|
66 I = 0; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
67 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
68 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
|
69 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
|
70 I = i; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
71 return |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
72 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
73 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
74 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
75 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
76 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
|
77 I = obj.getIndex(key); |
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 if I == 0 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
80 b = false; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
81 else |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
82 b = true; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
83 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
84 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
85 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
86 % 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
|
87 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
|
88 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
|
89 key |
9
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
90 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
|
91 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
92 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
93 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
|
94 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
|
95 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
96 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
97 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
98 % 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
|
99 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
|
100 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
|
101 e = e{1}; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
102 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
103 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
104 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
|
105 obj.keys(I) = []; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
106 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
|
107 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
108 entries = obj.matfile.entries; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
109 entries(I) = []; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
110 obj.matfile.entries = entries; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
111 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
112 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
113 % 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
|
114 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
|
115 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
|
116 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
|
117 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
|
118 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
119 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
|
120 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
121 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
122 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
|
123 if obj.isKey(key); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
124 I = obj.getIndex(key); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
125 else |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
126 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
|
127 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
128 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
129 obj.keys{I} = key; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
130 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
|
131 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
|
132 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
133 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
134 function delete(obj, key) |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
135 if ~obj.isKey(key); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
136 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
|
137 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
138 I = obj.getIndex(key); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
139 obj.deleteByIndex(I); |
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 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
142 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
143 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
144 % 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
|
145 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
|
146 keys = {}; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
147 entries = {}; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
148 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
|
149 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
|
150 i |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
151 obj.keys{i} |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
152 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
|
153 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
|
154 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
155 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
156 end |
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 |
18
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
159 methods(Static) |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
160 function merge(fn1, fn2, fnNew) |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
161 sf1 = SolutionFile(fn1); |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
162 sf2 = SolutionFile(fn2); |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
163 |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
164 sfNew = SolutionFile(fnNew); |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
165 |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
166 sfNew.keys = sf1.keys; |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
167 sfNew.matfile.keys = sf1.keys; |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
168 sfNew.matfile.entries = sf1.matfile.entries; |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
169 |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
170 for i = 1:length(sf2.keys) |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
171 if sfNew.isKey(sf2.keys{i}) |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
172 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
|
173 end |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
174 sfNew.store(sf2.keys{i},sf2.getEntryByIndex(i)); |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
175 end |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
176 end |
24
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
177 |
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
178 |
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
179 function b = keyIsEqual(key1,key2) |
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
180 b = isequal(key1, key2); |
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
181 end |
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
182 |
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
183 function b = keyIsIn(key,keys) |
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
184 b = false; |
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
185 for i = 1:length(keys) |
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
186 b = isequal(key, keys{i}); |
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
187 if b |
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
188 return |
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
189 end |
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
190 end |
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
191 end |
18
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
192 end |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
193 |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
194 end |