blob: cfc1101b9f82d1a535c1f5c51a9f9bde4aafdad8 [file] [log] [blame]
John Kessenich9c86c6a2016-05-03 22:49:24 -06001//
2//Copyright (C) 2016 Google, Inc.
3//
4//All rights reserved.
5//
6//Redistribution and use in source and binary forms, with or without
7//modification, are permitted provided that the following conditions
8//are met:
9//
10// Redistributions of source code must retain the above copyright
11// notice, this list of conditions and the following disclaimer.
12//
13// Redistributions in binary form must reproduce the above
14// copyright notice, this list of conditions and the following
15// disclaimer in the documentation and/or other materials provided
16// with the distribution.
17//
18// Neither the name of Google, Inc., nor the names of its
19// contributors may be used to endorse or promote products derived
20// from this software without specific prior written permission.
21//
22//THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23//"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24//LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
25//FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
26//COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
27//INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
28//BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
29//LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
30//CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31//LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
32//ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33//POSSIBILITY OF SUCH DAMAGE.
34//
35
36#include "hlslTokenStream.h"
37
38namespace glslang {
39
40// Load 'token' with the next token in the stream of tokens.
41void HlslTokenStream::advanceToken()
42{
43 scanner.tokenize(token);
44}
45
46// Return the current token class.
47EHlslTokenClass HlslTokenStream::peek() const
48{
49 return token.tokenClass;
50}
51
52// Return true, without advancing to the next token, if the current token is
53// the expected (passed in) token class.
54bool HlslTokenStream::peekTokenClass(EHlslTokenClass tokenClass) const
55{
56 return peek() == tokenClass;
57}
58
59// Return true and advance to the next token if the current token is the
60// expected (passed in) token class.
61bool HlslTokenStream::acceptTokenClass(EHlslTokenClass tokenClass)
62{
63 if (peekTokenClass(tokenClass)) {
64 advanceToken();
65 return true;
66 }
67
68 return false;
69}
70
71} // end namespace glslang