chromium/third_party/angle/src/compiler/translator/AsNode.h

//
// Copyright 2020 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//

#ifndef COMPILER_TRANSLATOR_ASNODE_H_
#define COMPILER_TRANSLATOR_ASNODE_H_

#include "common/angleutils.h"
#include "compiler/translator/IntermNode.h"

#include <utility>

namespace sh
{

namespace priv
{

template <typename T>
struct AsNode
{};

template <>
struct AsNode<TIntermNode>
{};

template <>
struct AsNode<TIntermTyped>
{};

template <>
struct AsNode<TIntermSymbol>
{};

template <>
struct AsNode<TIntermConstantUnion>
{};

template <>
struct AsNode<TIntermFunctionPrototype>
{};

template <>
struct AsNode<TIntermPreprocessorDirective>
{};

template <>
struct AsNode<TIntermSwizzle>
{};

template <>
struct AsNode<TIntermBinary>
{};

template <>
struct AsNode<TIntermUnary>
{};

template <>
struct AsNode<TIntermTernary>
{};

template <>
struct AsNode<TIntermIfElse>
{};

template <>
struct AsNode<TIntermSwitch>
{};

template <>
struct AsNode<TIntermCase>
{};

template <>
struct AsNode<TIntermFunctionDefinition>
{};

template <>
struct AsNode<TIntermAggregate>
{};

template <>
struct AsNode<TIntermBlock>
{};

template <>
struct AsNode<TIntermGlobalQualifierDeclaration>
{};

template <>
struct AsNode<TIntermDeclaration>
{};

template <>
struct AsNode<TIntermLoop>
{};

template <>
struct AsNode<TIntermBranch>
{};

}  // namespace priv

template <typename T>
ANGLE_INLINE T *asNode(TIntermNode *node)
{}

}  // namespace sh

#endif  // COMPILER_TRANSLATOR_ASNODE_H_