LCOV - code coverage report
Current view: top level - gfx/angle/src/compiler/preprocessor - Token.h (source / functions) Hit Total Coverage
Test: output.info Lines: 0 13 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 10 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : //
       2             : // Copyright (c) 2011 The ANGLE Project Authors. All rights reserved.
       3             : // Use of this source code is governed by a BSD-style license that can be
       4             : // found in the LICENSE file.
       5             : //
       6             : 
       7             : #ifndef COMPILER_PREPROCESSOR_TOKEN_H_
       8             : #define COMPILER_PREPROCESSOR_TOKEN_H_
       9             : 
      10             : #include <ostream>
      11             : #include <string>
      12             : 
      13             : #include "compiler/preprocessor/SourceLocation.h"
      14             : 
      15             : namespace pp
      16             : {
      17             : 
      18           0 : struct Token
      19             : {
      20             :     enum Type
      21             :     {
      22             :         LAST = 0,  // EOF.
      23             : 
      24             :         IDENTIFIER = 258,
      25             : 
      26             :         CONST_INT,
      27             :         CONST_FLOAT,
      28             : 
      29             :         OP_INC,
      30             :         OP_DEC,
      31             :         OP_LEFT,
      32             :         OP_RIGHT,
      33             :         OP_LE,
      34             :         OP_GE,
      35             :         OP_EQ,
      36             :         OP_NE,
      37             :         OP_AND,
      38             :         OP_XOR,
      39             :         OP_OR,
      40             :         OP_ADD_ASSIGN,
      41             :         OP_SUB_ASSIGN,
      42             :         OP_MUL_ASSIGN,
      43             :         OP_DIV_ASSIGN,
      44             :         OP_MOD_ASSIGN,
      45             :         OP_LEFT_ASSIGN,
      46             :         OP_RIGHT_ASSIGN,
      47             :         OP_AND_ASSIGN,
      48             :         OP_XOR_ASSIGN,
      49             :         OP_OR_ASSIGN,
      50             : 
      51             :         // Preprocessing token types.
      52             :         // These types are used by the preprocessor internally.
      53             :         // Preprocessor clients must not depend or check for them.
      54             :         PP_HASH,
      55             :         PP_NUMBER,
      56             :         PP_OTHER
      57             :     };
      58             :     enum Flags
      59             :     {
      60             :         AT_START_OF_LINE   = 1 << 0,
      61             :         HAS_LEADING_SPACE  = 1 << 1,
      62             :         EXPANSION_DISABLED = 1 << 2
      63             :     };
      64             : 
      65           0 :     Token()
      66           0 :         : type(0),
      67           0 :           flags(0)
      68             :     {
      69           0 :     }
      70             : 
      71             :     void reset();
      72             :     bool equals(const Token &other) const;
      73             : 
      74             :     // Returns true if this is the first token on line.
      75             :     // It disregards any leading whitespace.
      76           0 :     bool atStartOfLine() const
      77             :     {
      78           0 :         return (flags & AT_START_OF_LINE) != 0;
      79             :     }
      80             :     void setAtStartOfLine(bool start);
      81             : 
      82           0 :     bool hasLeadingSpace() const
      83             :     {
      84           0 :         return (flags & HAS_LEADING_SPACE) != 0;
      85             :     }
      86             :     void setHasLeadingSpace(bool space);
      87             : 
      88           0 :     bool expansionDisabled() const
      89             :     {
      90           0 :         return (flags & EXPANSION_DISABLED) != 0;
      91             :     }
      92             :     void setExpansionDisabled(bool disable);
      93             : 
      94             :     // Converts text into numeric value for CONST_INT and CONST_FLOAT token.
      95             :     // Returns false if the parsed value cannot fit into an int or float.
      96             :     bool iValue(int *value) const;
      97             :     bool uValue(unsigned int *value) const;
      98             :     bool fValue(float *value) const;
      99             : 
     100             :     int type;
     101             :     unsigned int flags;
     102             :     SourceLocation location;
     103             :     std::string text;
     104             : };
     105             : 
     106           0 : inline bool operator==(const Token &lhs, const Token &rhs)
     107             : {
     108           0 :     return lhs.equals(rhs);
     109             : }
     110             : 
     111             : inline bool operator!=(const Token &lhs, const Token &rhs)
     112             : {
     113             :     return !lhs.equals(rhs);
     114             : }
     115             : 
     116             : std::ostream &operator<<(std::ostream &out, const Token &token);
     117             : 
     118             : }  // namepsace pp
     119             : 
     120             : #endif  // COMPILER_PREPROCESSOR_TOKEN_H_

Generated by: LCOV version 1.13