MCPcopy Create free account
hub / github.com/LunarG/VulkanTools / parseConditionalFrameRange

Method parseConditionalFrameRange

layersvt/api_dump.h:213–285  ·  view source on GitHub ↗

Parses a string for a comma seperated list of frames & frame ranges * where frames are singular integers and frame ranges are of the following * format: "S-C-I" with S is the start frame, C is the count of frames to dump, * and I the interval between dumped frames. * Valid range strings: "2,3,5", "4-4-2", "3-6, 10-2" */

Source from the content-addressed store, hash-verified

211 * Valid range strings: "2,3,5", "4-4-2", "3-6, 10-2"
212 */
213 bool parseConditionalFrameRange(std::string range_str) {
214 uint32_t current_char = 0;
215
216 if (range_str.empty()) {
217 printErrorMsg("Conditional range error: format string was empty\n");
218 return false;
219 }
220
221 while (current_char < range_str.size()) {
222 NumberToken frame_number = parseNumber(range_str, current_char);
223 if (frame_number.length <= 0) {
224 printErrorMsg("Conditional range error: Invalid frame number\n");
225 return false;
226 }
227 current_char += frame_number.length;
228
229 // Range of frames
230 if (range_str[current_char] == '-') {
231 current_char++;
232 if (current_char >= range_str.size()) {
233 printErrorMsg("Conditional range error: Must have number for frame count\n");
234 return false;
235 }
236 NumberToken frame_count = parseNumber(range_str, current_char);
237 if (frame_count.length <= 0) {
238 printErrorMsg("Conditional range error: Invalid frame count\n");
239 return false;
240 }
241 current_char += frame_count.length;
242
243 if (current_char >= range_str.size()) {
244 // Frame Range w/o interval
245 ranges.push_back(FrameRange{frame_number.value, frame_count.value, 1l});
246 use_conditional_output = true;
247 return true;
248 }
249
250 else if (range_str[current_char] == '-') {
251 current_char++;
252 if (current_char >= range_str.size()) {
253 printErrorMsg("Conditional range error: Must have number for frame interval \n");
254 return false;
255 }
256
257 NumberToken frame_interval = parseNumber(range_str, current_char);
258 if (frame_interval.length <= 0) {
259 printErrorMsg("Conditional range error: Invalid interval\n");
260 return false;
261 }
262
263 // Frame Range w/ interval
264 ranges.push_back(FrameRange{frame_number.value, frame_count.value, frame_interval.value});
265
266 current_char += frame_interval.length;
267 if (current_char >= range_str.size()) {
268 use_conditional_output = true;
269 return true;
270 }

Callers 1

initMethod · 0.80

Calls

no outgoing calls

Tested by

no test coverage detected