/* * Copyright 2017 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ /***************************************************************************************** ******************** This file was generated by sksllex. Do not edit. ******************* *****************************************************************************************/ #ifndef SKSL_Lexer #define SKSL_Lexer #include #include namespace SkSL { struct Token { enum Kind { #undef END_OF_FILE END_OF_FILE, #undef FLOAT_LITERAL FLOAT_LITERAL, #undef INT_LITERAL INT_LITERAL, #undef TRUE_LITERAL TRUE_LITERAL, #undef FALSE_LITERAL FALSE_LITERAL, #undef IF IF, #undef STATIC_IF STATIC_IF, #undef ELSE ELSE, #undef FOR FOR, #undef WHILE WHILE, #undef DO DO, #undef SWITCH SWITCH, #undef STATIC_SWITCH STATIC_SWITCH, #undef CASE CASE, #undef DEFAULT DEFAULT, #undef BREAK BREAK, #undef CONTINUE CONTINUE, #undef DISCARD DISCARD, #undef RETURN RETURN, #undef IN IN, #undef OUT OUT, #undef INOUT INOUT, #undef UNIFORM UNIFORM, #undef CONST CONST, #undef LOWP LOWP, #undef MEDIUMP MEDIUMP, #undef HIGHP HIGHP, #undef FLAT FLAT, #undef NOPERSPECTIVE NOPERSPECTIVE, #undef READONLY READONLY, #undef WRITEONLY WRITEONLY, #undef COHERENT COHERENT, #undef VOLATILE VOLATILE, #undef RESTRICT RESTRICT, #undef BUFFER BUFFER, #undef HASSIDEEFFECTS HASSIDEEFFECTS, #undef STRUCT STRUCT, #undef LAYOUT LAYOUT, #undef PRECISION PRECISION, #undef ENUM ENUM, #undef CLASS CLASS, #undef IDENTIFIER IDENTIFIER, #undef DIRECTIVE DIRECTIVE, #undef SECTION SECTION, #undef LPAREN LPAREN, #undef RPAREN RPAREN, #undef LBRACE LBRACE, #undef RBRACE RBRACE, #undef LBRACKET LBRACKET, #undef RBRACKET RBRACKET, #undef DOT DOT, #undef COMMA COMMA, #undef PLUSPLUS PLUSPLUS, #undef MINUSMINUS MINUSMINUS, #undef PLUS PLUS, #undef MINUS MINUS, #undef STAR STAR, #undef SLASH SLASH, #undef PERCENT PERCENT, #undef SHL SHL, #undef SHR SHR, #undef BITWISEOR BITWISEOR, #undef BITWISEXOR BITWISEXOR, #undef BITWISEAND BITWISEAND, #undef BITWISENOT BITWISENOT, #undef LOGICALOR LOGICALOR, #undef LOGICALXOR LOGICALXOR, #undef LOGICALAND LOGICALAND, #undef LOGICALNOT LOGICALNOT, #undef QUESTION QUESTION, #undef COLONCOLON COLONCOLON, #undef COLON COLON, #undef EQ EQ, #undef EQEQ EQEQ, #undef NEQ NEQ, #undef GT GT, #undef LT LT, #undef GTEQ GTEQ, #undef LTEQ LTEQ, #undef PLUSEQ PLUSEQ, #undef MINUSEQ MINUSEQ, #undef STAREQ STAREQ, #undef SLASHEQ SLASHEQ, #undef PERCENTEQ PERCENTEQ, #undef SHLEQ SHLEQ, #undef SHREQ SHREQ, #undef BITWISEOREQ BITWISEOREQ, #undef BITWISEXOREQ BITWISEXOREQ, #undef BITWISEANDEQ BITWISEANDEQ, #undef LOGICALOREQ LOGICALOREQ, #undef LOGICALXOREQ LOGICALXOREQ, #undef LOGICALANDEQ LOGICALANDEQ, #undef SEMICOLON SEMICOLON, #undef ARROW ARROW, #undef WHITESPACE WHITESPACE, #undef LINE_COMMENT LINE_COMMENT, #undef BLOCK_COMMENT BLOCK_COMMENT, #undef INVALID INVALID, }; Token() : fKind(Kind::INVALID), fOffset(-1), fLength(-1) {} Token(Kind kind, int offset, int length) : fKind(kind), fOffset(offset), fLength(length) {} Kind fKind; int fOffset; int fLength; }; class Lexer { public: void start(const char* text, size_t length) { fText = text; fLength = length; fOffset = 0; } Token next(); private: const char* fText; int fLength; int fOffset; }; } // namespace SkSL #endif