1ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch//
2ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved.
3ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch// Use of this source code is governed by a BSD-style license that can be
4ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch// found in the LICENSE file.
5ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch//
6ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch// SearchSymbol is an AST traverser to detect the use of a given symbol name
7ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch//
8ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch
9ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch#include "compiler/SearchSymbol.h"
10ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch
11ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch#include "compiler/InfoSink.h"
12ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch#include "compiler/OutputHLSL.h"
13ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch
14ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochnamespace sh
15ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch{
16ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen MurdochSearchSymbol::SearchSymbol(const TString &symbol) : mSymbol(symbol)
17ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch{
18ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    match = false;
19ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch}
20ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch
21ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochvoid SearchSymbol::traverse(TIntermNode *node)
22ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch{
23ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    node->traverse(this);
24ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch}
25ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch
26ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochvoid SearchSymbol::visitSymbol(TIntermSymbol *symbolNode)
27ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch{
28ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    if (symbolNode->getSymbol() == mSymbol)
29ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    {
30ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch        match = true;
31ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    }
32ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch}
33ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch
34ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochbool SearchSymbol::foundMatch() const
35ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch{
36ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    return match;
37ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch}
38ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch}
39