diff options
author | Pieter Wuille <pieter.wuille@gmail.com> | 2019-07-30 14:53:05 -0700 |
---|---|---|
committer | Pieter Wuille <pieter.wuille@gmail.com> | 2019-09-18 12:12:13 -0700 |
commit | 230d43fdbc41b356700b0d8a6984d69e00279ade (patch) | |
tree | 0576b8cc76c3b3c2a491a226e450e6169d1fdafb /src/util/spanparsing.h | |
parent | 796b71363396e2ac99d241f5975c0978cdae3d67 (diff) | |
download | bitcoin-230d43fdbc41b356700b0d8a6984d69e00279ade.tar.xz |
Abstract out some of the descriptor Span-parsing helpers
Diffstat (limited to 'src/util/spanparsing.h')
-rw-r--r-- | src/util/spanparsing.h | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/util/spanparsing.h b/src/util/spanparsing.h new file mode 100644 index 0000000000..a2eb24b1fb --- /dev/null +++ b/src/util/spanparsing.h @@ -0,0 +1,29 @@ +// Copyright (c) 2018 The Bitcoin Core developers +// Distributed under the MIT software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + +#ifndef BITCOIN_UTIL_SPANPARSING_H +#define BITCOIN_UTIL_SPANPARSING_H + +#include <span.h> + +#include <string> +#include <vector> + +namespace spanparsing { + +/** Parse a constant. If successful, sp is updated to skip the constant and return true. */ +bool Const(const std::string& str, Span<const char>& sp); + +/** Parse a function call. If successful, sp is updated to be the function's argument(s). */ +bool Func(const std::string& str, Span<const char>& sp); + +/** Return the expression that sp begins with, and update sp to skip it. */ +Span<const char> Expr(Span<const char>& sp); + +/** Split a string on every instance of sep, returning a vector. */ +std::vector<Span<const char>> Split(const Span<const char>& sp, char sep); + +} // namespace spanparsing + +#endif // BITCOIN_UTIL_SPANPARSING_H |