tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

NodeSearch.h (1270B)


      1 //
      2 // Copyright 2002 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 // NodeSearch.h: Utilities for searching translator node graphs
      7 //
      8 
      9 #ifndef COMPILER_TRANSLATOR_TREEUTIL_NODESEARCH_H_
     10 #define COMPILER_TRANSLATOR_TREEUTIL_NODESEARCH_H_
     11 
     12 #include "compiler/translator/tree_util/IntermTraverse.h"
     13 
     14 namespace sh
     15 {
     16 
     17 template <class Parent>
     18 class NodeSearchTraverser : public TIntermTraverser
     19 {
     20  public:
     21    NodeSearchTraverser() : TIntermTraverser(true, false, false), mFound(false) {}
     22 
     23    bool found() const { return mFound; }
     24 
     25    static bool search(TIntermNode *node)
     26    {
     27        Parent searchTraverser;
     28        node->traverse(&searchTraverser);
     29        return searchTraverser.found();
     30    }
     31 
     32  protected:
     33    bool mFound;
     34 };
     35 
     36 class FindDiscard : public NodeSearchTraverser<FindDiscard>
     37 {
     38  public:
     39    bool visitBranch(Visit visit, TIntermBranch *node) override
     40    {
     41        switch (node->getFlowOp())
     42        {
     43            case EOpKill:
     44                mFound = true;
     45                break;
     46 
     47            default:
     48                break;
     49        }
     50 
     51        return !mFound;
     52    }
     53 };
     54 }  // namespace sh
     55 
     56 #endif  // COMPILER_TRANSLATOR_TREEUTIL_NODESEARCH_H_