Fix click-to-play positioning.
[chromium-blink-merge.git] / tools / gn / token.h
blob8c7cd58f1e54d52cd579401e010b6d0a7c6a4bc3
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef TOOLS_GN_TOKEN_H_
6 #define TOOLS_GN_TOKEN_H_
8 #include "base/strings/string_piece.h"
9 #include "tools/gn/location.h"
11 class Token {
12 public:
13 enum Type {
14 INVALID,
15 INTEGER, // 123
16 STRING, // "blah"
17 TRUE_TOKEN, // Not "TRUE" to avoid collisions with #define in windows.h.
18 FALSE_TOKEN,
20 // Various operators.
21 EQUAL,
22 PLUS,
23 MINUS,
24 PLUS_EQUALS,
25 MINUS_EQUALS,
26 EQUAL_EQUAL,
27 NOT_EQUAL,
28 LESS_EQUAL,
29 GREATER_EQUAL,
30 LESS_THAN,
31 GREATER_THAN,
32 BOOLEAN_AND,
33 BOOLEAN_OR,
34 BANG,
35 DOT,
37 LEFT_PAREN,
38 RIGHT_PAREN,
39 LEFT_BRACKET,
40 RIGHT_BRACKET,
41 LEFT_BRACE,
42 RIGHT_BRACE,
44 IF,
45 ELSE,
46 IDENTIFIER, // foo
47 COMMA, // ,
48 COMMENT, // #...\n
50 UNCLASSIFIED_OPERATOR, // TODO(scottmg): This shouldn't be necessary.
52 NUM_TYPES
55 Token();
56 Token(const Location& location, Type t, const base::StringPiece& v);
58 Type type() const { return type_; }
59 const base::StringPiece& value() const { return value_; }
60 const Location& location() const { return location_; }
61 LocationRange range() const {
62 return LocationRange(location_,
63 Location(location_.file(), location_.line_number(),
64 location_.char_offset() +
65 static_cast<int>(value_.size())));
68 // Helper functions for comparing this token to something.
69 bool IsIdentifierEqualTo(const char* v) const;
70 bool IsStringEqualTo(const char* v) const;
72 private:
73 Type type_;
74 base::StringPiece value_;
75 Location location_;
78 #endif // TOOLS_GN_TOKEN_H_