blob: 8142faea1cc810b48a248cffafefe6dd4ab6b1ac [file] [log] [blame]
Olli Etuahofc0e2bc2015-04-16 13:39:56 +03001//
2// Copyright (c) 2002-2015 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//
Olli Etuahoa6f22092015-05-08 18:31:10 +03006// The SeparateDeclarations function processes declarations, so that in the end each declaration
7// contains only one declarator.
Jamie Madilld7b1ab52016-12-12 14:42:19 -05008// This is useful as an intermediate step when initialization needs to be separated from
9// declaration, or when things need to be unfolded out of the initializer.
Olli Etuahofc0e2bc2015-04-16 13:39:56 +030010// Example:
11// int a[1] = int[1](1), b[1] = int[1](2);
12// gets transformed when run through this class into the AST equivalent of:
13// int a[1] = int[1](1);
14// int b[1] = int[1](2);
15
16#ifndef COMPILER_TRANSLATOR_SEPARATEDECLARATIONS_H_
17#define COMPILER_TRANSLATOR_SEPARATEDECLARATIONS_H_
18
Jamie Madill45bcc782016-11-07 13:58:48 -050019namespace sh
20{
Olli Etuahofc0e2bc2015-04-16 13:39:56 +030021class TIntermNode;
22
Olli Etuahoa6f22092015-05-08 18:31:10 +030023void SeparateDeclarations(TIntermNode *root);
Jamie Madill45bcc782016-11-07 13:58:48 -050024} // namespace sh
Olli Etuahofc0e2bc2015-04-16 13:39:56 +030025
26#endif // COMPILER_TRANSLATOR_SEPARATEDECLARATIONS_H_