14e4b807d219f58fad5f7b96ed23c9fdd1fc5de15alokp@chromium.org// 24e4b807d219f58fad5f7b96ed23c9fdd1fc5de15alokp@chromium.org// Copyright (c) 2011 The ANGLE Project Authors. All rights reserved. 34e4b807d219f58fad5f7b96ed23c9fdd1fc5de15alokp@chromium.org// Use of this source code is governed by a BSD-style license that can be 44e4b807d219f58fad5f7b96ed23c9fdd1fc5de15alokp@chromium.org// found in the LICENSE file. 54e4b807d219f58fad5f7b96ed23c9fdd1fc5de15alokp@chromium.org// 64e4b807d219f58fad5f7b96ed23c9fdd1fc5de15alokp@chromium.org 74e4b807d219f58fad5f7b96ed23c9fdd1fc5de15alokp@chromium.org#include "Token.h" 84e4b807d219f58fad5f7b96ed23c9fdd1fc5de15alokp@chromium.org 92e81891c21bfb199bb53f903bf0967f07efb65d8alokp@chromium.org#include <cassert> 102e81891c21bfb199bb53f903bf0967f07efb65d8alokp@chromium.org 11fc0543f4b29f6ef8cbdb074015487be555a2076dalokp@chromium.org#include "numeric_lex.h" 122e81891c21bfb199bb53f903bf0967f07efb65d8alokp@chromium.org 134e4b807d219f58fad5f7b96ed23c9fdd1fc5de15alokp@chromium.orgnamespace pp 144e4b807d219f58fad5f7b96ed23c9fdd1fc5de15alokp@chromium.org{ 154e4b807d219f58fad5f7b96ed23c9fdd1fc5de15alokp@chromium.org 1619d7aa60c6da3612f60d6c5c3ff7b6077619e167alokp@chromium.orgvoid Token::reset() 1719d7aa60c6da3612f60d6c5c3ff7b6077619e167alokp@chromium.org{ 1819d7aa60c6da3612f60d6c5c3ff7b6077619e167alokp@chromium.org type = 0; 1919d7aa60c6da3612f60d6c5c3ff7b6077619e167alokp@chromium.org flags = 0; 2019d7aa60c6da3612f60d6c5c3ff7b6077619e167alokp@chromium.org location = SourceLocation(); 215b6a68e04a7d27dab71524fa481f42818f84a240alokp@chromium.org text.clear(); 2219d7aa60c6da3612f60d6c5c3ff7b6077619e167alokp@chromium.org} 2319d7aa60c6da3612f60d6c5c3ff7b6077619e167alokp@chromium.org 24d526f9895c0aa867adb74a78e53832a9240c6ad6Zhenyao Mobool Token::equals(const Token &other) const 2519d7aa60c6da3612f60d6c5c3ff7b6077619e167alokp@chromium.org{ 2619d7aa60c6da3612f60d6c5c3ff7b6077619e167alokp@chromium.org return (type == other.type) && 2719d7aa60c6da3612f60d6c5c3ff7b6077619e167alokp@chromium.org (flags == other.flags) && 2819d7aa60c6da3612f60d6c5c3ff7b6077619e167alokp@chromium.org (location == other.location) && 295b6a68e04a7d27dab71524fa481f42818f84a240alokp@chromium.org (text == other.text); 3019d7aa60c6da3612f60d6c5c3ff7b6077619e167alokp@chromium.org} 3119d7aa60c6da3612f60d6c5c3ff7b6077619e167alokp@chromium.org 3219d7aa60c6da3612f60d6c5c3ff7b6077619e167alokp@chromium.orgvoid Token::setAtStartOfLine(bool start) 3319d7aa60c6da3612f60d6c5c3ff7b6077619e167alokp@chromium.org{ 3419d7aa60c6da3612f60d6c5c3ff7b6077619e167alokp@chromium.org if (start) 3519d7aa60c6da3612f60d6c5c3ff7b6077619e167alokp@chromium.org flags |= AT_START_OF_LINE; 3619d7aa60c6da3612f60d6c5c3ff7b6077619e167alokp@chromium.org else 3719d7aa60c6da3612f60d6c5c3ff7b6077619e167alokp@chromium.org flags &= ~AT_START_OF_LINE; 3819d7aa60c6da3612f60d6c5c3ff7b6077619e167alokp@chromium.org} 3919d7aa60c6da3612f60d6c5c3ff7b6077619e167alokp@chromium.org 4019d7aa60c6da3612f60d6c5c3ff7b6077619e167alokp@chromium.orgvoid Token::setHasLeadingSpace(bool space) 4119d7aa60c6da3612f60d6c5c3ff7b6077619e167alokp@chromium.org{ 4219d7aa60c6da3612f60d6c5c3ff7b6077619e167alokp@chromium.org if (space) 4319d7aa60c6da3612f60d6c5c3ff7b6077619e167alokp@chromium.org flags |= HAS_LEADING_SPACE; 4419d7aa60c6da3612f60d6c5c3ff7b6077619e167alokp@chromium.org else 4519d7aa60c6da3612f60d6c5c3ff7b6077619e167alokp@chromium.org flags &= ~HAS_LEADING_SPACE; 4619d7aa60c6da3612f60d6c5c3ff7b6077619e167alokp@chromium.org} 4719d7aa60c6da3612f60d6c5c3ff7b6077619e167alokp@chromium.org 487fc38dddd2f5b6349348230475ca359666af583aalokp@chromium.orgvoid Token::setExpansionDisabled(bool disable) 497fc38dddd2f5b6349348230475ca359666af583aalokp@chromium.org{ 507fc38dddd2f5b6349348230475ca359666af583aalokp@chromium.org if (disable) 517fc38dddd2f5b6349348230475ca359666af583aalokp@chromium.org flags |= EXPANSION_DISABLED; 527fc38dddd2f5b6349348230475ca359666af583aalokp@chromium.org else 537fc38dddd2f5b6349348230475ca359666af583aalokp@chromium.org flags &= ~EXPANSION_DISABLED; 547fc38dddd2f5b6349348230475ca359666af583aalokp@chromium.org} 557fc38dddd2f5b6349348230475ca359666af583aalokp@chromium.org 56d526f9895c0aa867adb74a78e53832a9240c6ad6Zhenyao Mobool Token::iValue(int *value) const 572e81891c21bfb199bb53f903bf0967f07efb65d8alokp@chromium.org{ 582e81891c21bfb199bb53f903bf0967f07efb65d8alokp@chromium.org assert(type == CONST_INT); 59fc0543f4b29f6ef8cbdb074015487be555a2076dalokp@chromium.org return numeric_lex_int(text, value); 602e81891c21bfb199bb53f903bf0967f07efb65d8alokp@chromium.org} 612e81891c21bfb199bb53f903bf0967f07efb65d8alokp@chromium.org 62d526f9895c0aa867adb74a78e53832a9240c6ad6Zhenyao Mobool Token::uValue(unsigned int *value) const 632e81891c21bfb199bb53f903bf0967f07efb65d8alokp@chromium.org{ 642e81891c21bfb199bb53f903bf0967f07efb65d8alokp@chromium.org assert(type == CONST_INT); 65fc0543f4b29f6ef8cbdb074015487be555a2076dalokp@chromium.org return numeric_lex_int(text, value); 662e81891c21bfb199bb53f903bf0967f07efb65d8alokp@chromium.org} 672e81891c21bfb199bb53f903bf0967f07efb65d8alokp@chromium.org 68d526f9895c0aa867adb74a78e53832a9240c6ad6Zhenyao Mobool Token::fValue(float *value) const 692e81891c21bfb199bb53f903bf0967f07efb65d8alokp@chromium.org{ 702e81891c21bfb199bb53f903bf0967f07efb65d8alokp@chromium.org assert(type == CONST_FLOAT); 71fc0543f4b29f6ef8cbdb074015487be555a2076dalokp@chromium.org return numeric_lex_float(text, value); 722e81891c21bfb199bb53f903bf0967f07efb65d8alokp@chromium.org} 732e81891c21bfb199bb53f903bf0967f07efb65d8alokp@chromium.org 74d526f9895c0aa867adb74a78e53832a9240c6ad6Zhenyao Mostd::ostream &operator<<(std::ostream &out, const Token &token) 754e4b807d219f58fad5f7b96ed23c9fdd1fc5de15alokp@chromium.org{ 7640da4c5305c5d4b463e7af431d773cacebcd14baalokp@chromium.org if (token.hasLeadingSpace()) 7740da4c5305c5d4b463e7af431d773cacebcd14baalokp@chromium.org out << " "; 7840da4c5305c5d4b463e7af431d773cacebcd14baalokp@chromium.org 795b6a68e04a7d27dab71524fa481f42818f84a240alokp@chromium.org out << token.text; 80b81c401dfb6192cb2deeda4e344fa54d46caa0abalokp@chromium.org return out; 814e4b807d219f58fad5f7b96ed23c9fdd1fc5de15alokp@chromium.org} 824e4b807d219f58fad5f7b96ed23c9fdd1fc5de15alokp@chromium.org 834b2a522a3103768fa244d07644f3e201bd30ff9dalokp@chromium.org} // namespace pp 84