70 lines
2.1 KiB
C++
70 lines
2.1 KiB
C++
|
|
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||
|
|
|
||
|
|
#pragma once
|
||
|
|
|
||
|
|
#include "BLI_string_ref.hh"
|
||
|
|
|
||
|
|
/*
|
||
|
|
* Various text parsing utilities commonly used by text-based input formats.
|
||
|
|
*/
|
||
|
|
|
||
|
|
namespace blender::io {
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Fetches next line from an input string buffer.
|
||
|
|
*
|
||
|
|
* The returned line will not have '\n' characters at the end;
|
||
|
|
* the `buffer` is modified to contain remaining text without
|
||
|
|
* the input line.
|
||
|
|
*
|
||
|
|
* Note that backslash (\) character is treated as a line
|
||
|
|
* continuation, similar to OBJ file format or a C preprocessor.
|
||
|
|
*/
|
||
|
|
StringRef read_next_line(StringRef &buffer);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Drop leading white-space from a StringRef.
|
||
|
|
* Note that backslash character is considered white-space.
|
||
|
|
*/
|
||
|
|
StringRef drop_whitespace(StringRef str);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Drop leading non-white-space from a StringRef.
|
||
|
|
* Note that backslash character is considered white-space.
|
||
|
|
*/
|
||
|
|
StringRef drop_non_whitespace(StringRef str);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Parse an integer from an input string.
|
||
|
|
* The parsed result is stored in `dst`. The function skips
|
||
|
|
* leading white-space unless `skip_space=false`. If the
|
||
|
|
* number can't be parsed (invalid syntax, out of range),
|
||
|
|
* `fallback` value is stored instead.
|
||
|
|
*
|
||
|
|
* Returns the remainder of the input string after parsing.
|
||
|
|
*/
|
||
|
|
StringRef parse_int(StringRef str, int fallback, int &dst, bool skip_space = true);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Parse a float from an input string.
|
||
|
|
* The parsed result is stored in `dst`. The function skips
|
||
|
|
* leading white-space unless `skip_space=false`. If the
|
||
|
|
* number can't be parsed (invalid syntax, out of range),
|
||
|
|
* `fallback` value is stored instead.
|
||
|
|
*
|
||
|
|
* Returns the remainder of the input string after parsing.
|
||
|
|
*/
|
||
|
|
StringRef parse_float(StringRef str, float fallback, float &dst, bool skip_space = true);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Parse a number of white-space separated floats from an input string.
|
||
|
|
* The parsed `count` numbers are stored in `dst`. If a
|
||
|
|
* number can't be parsed (invalid syntax, out of range),
|
||
|
|
* `fallback` value is stored instead.
|
||
|
|
*
|
||
|
|
* Returns the remainder of the input string after parsing.
|
||
|
|
*/
|
||
|
|
StringRef parse_floats(StringRef str, float fallback, float *dst, int count);
|
||
|
|
|
||
|
|
} // namespace blender::io
|