diff --git a/src/util/spanparsing.h b/src/util/spanparsing.h index 130100ba9..4ecf033ff 100644 --- a/src/util/spanparsing.h +++ b/src/util/spanparsing.h @@ -1,31 +1,51 @@ // 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 #include #include namespace spanparsing { -/** Parse a constant. If successful, sp is updated to skip the constant and - * return true. */ +/** Parse a constant. + * + * If sp's initial part matches str, sp is updated to skip that part, and true + * is returned. Otherwise sp is unmodified and false is returned. + */ bool Const(const std::string &str, Span &sp); -/** Parse a function call. If successful, sp is updated to be the function's - * argument(s). */ +/** Parse a function call. + * + * If sp's initial part matches str + "(", and sp ends with ")", sp is updated + * to be the section between the braces, and true is returned. Otherwise sp is + * unmodified and false is returned. + */ bool Func(const std::string &str, Span &sp); -/** Return the expression that sp begins with, and update sp to skip it. */ +/** Extract the expression that sp begins with. + * + * This function will return the initial part of sp, up to (but not including) + * the first comma or closing brace, skipping ones that are surrounded by + * braces. So for example, for "foo(bar(1),2),3" the initial part + * "foo(bar(1),2)" will be returned. sp will be updated to skip the initial part + * that is returned. + */ Span Expr(Span &sp); -/** Split a string on every instance of sep, returning a vector. */ +/** Split a string on every instance of sep, returning a vector. + * + * If sep does not occur in sp, a singleton with the entirety of sp is returned. + * + * Note that this function does not care about braces, so splitting + * "foo(bar(1),2),3) on ',' will return {"foo(bar(1)", "2)", "3)"}. + */ std::vector> Split(const Span &sp, char sep); } // namespace spanparsing #endif // BITCOIN_UTIL_SPANPARSING_H