diff options
author | Arthur Cohen <arthur.cohen@embecosm.com> | 2022-02-16 15:13:57 +0100 |
---|---|---|
committer | Arthur Cohen <arthur.cohen@embecosm.com> | 2022-02-17 11:23:25 +0100 |
commit | 766a9002a3d5fb6701de2d84ce689379811eabff (patch) | |
tree | 3a94ffcbbc033f140cb1ec44cb70ad6e1739faa2 /gcc/rust/parse/rust-cfg-parser.h | |
parent | d81ba63f4829c12b89e87564c398e95879c89db1 (diff) | |
download | gcc-766a9002a3d5fb6701de2d84ce689379811eabff.zip gcc-766a9002a3d5fb6701de2d84ce689379811eabff.tar.gz gcc-766a9002a3d5fb6701de2d84ce689379811eabff.tar.bz2 |
frust-cfg: Only allow double quoted values
This commit separates the `handle_cfg_option()` function in two,
separating the parsing logic from the session logic. The parsing logic
is able to be unit tested, and now only allows quoted values.
Diffstat (limited to 'gcc/rust/parse/rust-cfg-parser.h')
-rw-r--r-- | gcc/rust/parse/rust-cfg-parser.h | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/gcc/rust/parse/rust-cfg-parser.h b/gcc/rust/parse/rust-cfg-parser.h new file mode 100644 index 0000000..a4b860f --- /dev/null +++ b/gcc/rust/parse/rust-cfg-parser.h @@ -0,0 +1,57 @@ +/* This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3, or (at your option) +any later version. + +GCC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING3. If not see +<http://www.gnu.org/licenses/>. */ + +#ifndef RUST_CFG_PARSER_H +#define RUST_CFG_PARSER_H + +#include "config.h" +#include "system.h" +#include "coretypes.h" + +#include <string> + +namespace Rust { +/** + * Parse a `key` or `key="value"` pair given to the `-frust-cfg` compiler + * option. + * + * The format is as follows: + * + * -frust-cfg=<input> + * + * cfg_input: identifier | identifier '=' '"' identifier '"' + * + * @param input User input given to the -frust-cfg option + * @param key String in which to store the parsed `key`. + * @param value String in which to store the parsed `value` if it exists + * + * @return false if the given input was invalid, true otherwise + */ +bool +parse_cfg_option (const std::string &input, std::string &key, + std::string &value); +} // namespace Rust + +#if CHECKING_P + +namespace selftest { +extern void +rust_cfg_parser_test (void); +} // namespace selftest + +#endif // CHECKING_P + +#endif // RUST_CFG_PARSER_H |