| /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying | |
| file LICENSE.rst or https://cmake.org/licensing for details. */ | |
| #pragma once | |
| #include "cmConfigure.h" // IWYU pragma: keep | |
| #include <cstdint> | |
| #include <string> | |
| #include <vector> | |
| class cmExprParserHelper | |
| { | |
| public: | |
| struct ParserType | |
| { | |
| std::int64_t Number; | |
| }; | |
| cmExprParserHelper(); | |
| ~cmExprParserHelper(); | |
| int ParseString(char const* str, int verb); | |
| int LexInput(char* buf, int maxlen); | |
| void Error(char const* str); | |
| void Warning(std::string str); | |
| void SetResult(std::int64_t value); | |
| std::int64_t GetResult() const { return this->Result; } | |
| char const* GetError() { return this->ErrorString.c_str(); } | |
| void UnexpectedChar(char c); | |
| std::string const& GetWarning() const { return this->WarningString; } | |
| std::int64_t ShL(std::int64_t l, std::int64_t r); | |
| std::int64_t ShR(std::int64_t l, std::int64_t r); | |
| std::int64_t Add(std::int64_t l, std::int64_t r); | |
| std::int64_t Sub(std::int64_t l, std::int64_t r); | |
| std::int64_t Mul(std::int64_t l, std::int64_t r); | |
| std::int64_t Div(std::int64_t l, std::int64_t r); | |
| std::int64_t Mod(std::int64_t l, std::int64_t r); | |
| std::int64_t Neg(std::int64_t x); | |
| static bool AddOverflow(long l, long r, long* p); | |
| static bool AddOverflow(long long l, long long r, long long* p); | |
| static bool SubOverflow(long l, long r, long* p); | |
| static bool SubOverflow(long long l, long long r, long long* p); | |
| static bool MulOverflow(long l, long r, long* p); | |
| static bool MulOverflow(long long l, long long r, long long* p); | |
| private: | |
| std::string::size_type InputBufferPos; | |
| std::string InputBuffer; | |
| std::vector<char> OutputBuffer; | |
| int CurrentLine; | |
| int Verbose; | |
| void Print(char const* place, char const* str); | |
| void SetError(std::string errorString); | |
| std::int64_t Result; | |
| char const* FileName; | |
| long FileLine; | |
| std::string ErrorString; | |
| std::string WarningString; | |
| }; | |
| #define YYSTYPE cmExprParserHelper::ParserType | |
| #define YYSTYPE_IS_DECLARED | |
| #define YY_EXTRA_TYPE cmExprParserHelper* | |
| #define YY_DECL int cmExpr_yylex(YYSTYPE* yylvalp, yyscan_t yyscanner) |