/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file Copyright.txt or https://cmake.org/licensing for details. */ #ifndef cmGeneratorExpressionLexer_h #define cmGeneratorExpressionLexer_h #include // IWYU pragma: keep #include #include #include struct cmGeneratorExpressionToken { cmGeneratorExpressionToken(unsigned type, const char* c, size_t l) : TokenType(type) , Content(c) , Length(l) { } enum { Text, BeginExpression, EndExpression, ColonSeparator, CommaSeparator }; unsigned TokenType; const char* Content; size_t Length; }; /** \class cmGeneratorExpressionLexer * */ class cmGeneratorExpressionLexer { public: cmGeneratorExpressionLexer(); std::vector Tokenize(const std::string& input); bool GetSawGeneratorExpression() const { return this->SawGeneratorExpression; } private: bool SawBeginExpression; bool SawGeneratorExpression; }; #endif