cmExprParserHelper.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
  2. file Copyright.txt or https://cmake.org/licensing for details. */
  3. #ifndef cmExprParserHelper_h
  4. #define cmExprParserHelper_h
  5. #include "cmConfigure.h" // IWYU pragma: keep
  6. #include <string>
  7. #include <vector>
  8. class cmExprParserHelper
  9. {
  10. public:
  11. struct ParserType
  12. {
  13. int Number;
  14. };
  15. cmExprParserHelper();
  16. ~cmExprParserHelper();
  17. int ParseString(const char* str, int verb);
  18. int LexInput(char* buf, int maxlen);
  19. void Error(const char* str);
  20. void SetResult(int value);
  21. int GetResult() { return this->Result; }
  22. const char* GetError() { return this->ErrorString.c_str(); }
  23. private:
  24. std::string::size_type InputBufferPos;
  25. std::string InputBuffer;
  26. std::vector<char> OutputBuffer;
  27. int CurrentLine;
  28. int Verbose;
  29. void Print(const char* place, const char* str);
  30. void CleanupParser();
  31. int Result;
  32. const char* FileName;
  33. long FileLine;
  34. std::string ErrorString;
  35. };
  36. #define YYSTYPE cmExprParserHelper::ParserType
  37. #define YYSTYPE_IS_DECLARED
  38. #define YY_EXTRA_TYPE cmExprParserHelper*
  39. #define YY_DECL int cmExpr_yylex(YYSTYPE* yylvalp, yyscan_t yyscanner)
  40. #endif