blob: ca7be17e8da817fbad2c0043c9e7257e1f21fc49 [file] [log] [blame]
Ben Claytonb05e1852021-11-23 20:45:51 +00001// Copyright 2021 The Tint Authors.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15#ifndef SRC_TRANSFORM_UNSHADOW_H_
16#define SRC_TRANSFORM_UNSHADOW_H_
17
18#include "src/transform/transform.h"
19
20namespace tint {
21namespace transform {
22
23/// Unshadow is a Transform that renames any variables that shadow another
24/// variable.
25class Unshadow : public Castable<Unshadow, Transform> {
26 public:
27 /// Constructor
28 Unshadow();
29
30 /// Destructor
31 ~Unshadow() override;
32
33 protected:
34 struct State;
35
36 /// Runs the transform using the CloneContext built for transforming a
37 /// program. Run() is responsible for calling Clone() on the CloneContext.
38 /// @param ctx the CloneContext primed with the input program and
39 /// ProgramBuilder
40 /// @param inputs optional extra transform-specific input data
41 /// @param outputs optional extra transform-specific output data
Ben Clayton12d54d72022-01-25 20:53:25 +000042 void Run(CloneContext& ctx,
43 const DataMap& inputs,
44 DataMap& outputs) const override;
Ben Claytonb05e1852021-11-23 20:45:51 +000045};
46
47} // namespace transform
48} // namespace tint
49
50#endif // SRC_TRANSFORM_UNSHADOW_H_