annotate SolutionFile.m @ 1031:2ef20d00b386 feature/advectionRV

For easier comparison, return both the first order and residual viscosity when evaluating the residual. Add the first order and residual viscosity to the state of the RungekuttaRV time steppers
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Thu, 17 Jan 2019 10:25:06 +0100
parents 8298734b1938
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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