| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  * Copyright 2016 Google Inc. | 2  * Copyright 2016 Google Inc. | 
| 3  * | 3  * | 
| 4  * Use of this source code is governed by a BSD-style license that can be | 4  * Use of this source code is governed by a BSD-style license that can be | 
| 5  * found in the LICENSE file. | 5  * found in the LICENSE file. | 
| 6  */ | 6  */ | 
| 7 | 7 | 
| 8 #ifndef SKSL_ASTLAYOUT | 8 #ifndef SKSL_ASTLAYOUT | 
| 9 #define SKSL_ASTLAYOUT | 9 #define SKSL_ASTLAYOUT | 
| 10 | 10 | 
| 11 #include "SkSLASTNode.h" | 11 #include "SkSLASTNode.h" | 
| 12 #include "SkSLUtil.h" | 12 #include "SkSLUtil.h" | 
| 13 | 13 | 
| 14 namespace SkSL { | 14 namespace SkSL { | 
| 15 | 15 | 
| 16 /** | 16 /** | 
| 17  * Represents a layout block appearing before a variable declaration, as in: | 17  * Represents a layout block appearing before a variable declaration, as in: | 
| 18  * | 18  * | 
| 19  * layout (location = 0) int x; | 19  * layout (location = 0) int x; | 
| 20  */ | 20  */ | 
| 21 struct ASTLayout : public ASTNode { | 21 struct ASTLayout : public ASTNode { | 
| 22     // For all parameters, a -1 means no value | 22     // For all parameters, a -1 means no value | 
| 23     ASTLayout(int location, int binding, int index, int set, int builtin, bool o
    riginUpperLeft, | 23     ASTLayout(int location, int binding, int index, int set, int builtin, bool o
    riginUpperLeft) | 
| 24               bool overrideCoverage, bool blendSupportAllEquations) |  | 
| 25     : fLocation(location) | 24     : fLocation(location) | 
| 26     , fBinding(binding) | 25     , fBinding(binding) | 
| 27     , fIndex(index) | 26     , fIndex(index) | 
| 28     , fSet(set) | 27     , fSet(set) | 
| 29     , fBuiltin(builtin) | 28     , fBuiltin(builtin) | 
| 30     , fOriginUpperLeft(originUpperLeft) | 29     , fOriginUpperLeft(originUpperLeft) {} | 
| 31     , fOverrideCoverage(overrideCoverage) |  | 
| 32     , fBlendSupportAllEquations(blendSupportAllEquations) {} |  | 
| 33 | 30 | 
| 34     std::string description() const { | 31     std::string description() const { | 
| 35         std::string result; | 32         std::string result; | 
| 36         std::string separator; | 33         std::string separator; | 
| 37         if (fLocation >= 0) { | 34         if (fLocation >= 0) { | 
| 38             result += separator + "location = " + to_string(fLocation); | 35             result += separator + "location = " + to_string(fLocation); | 
| 39             separator = ", "; | 36             separator = ", "; | 
| 40         } | 37         } | 
| 41         if (fBinding >= 0) { | 38         if (fBinding >= 0) { | 
| 42             result += separator + "binding = " + to_string(fBinding); | 39             result += separator + "binding = " + to_string(fBinding); | 
| 43             separator = ", "; | 40             separator = ", "; | 
| 44         } | 41         } | 
| 45         if (fIndex >= 0) { | 42         if (fIndex >= 0) { | 
| 46             result += separator + "index = " + to_string(fIndex); | 43             result += separator + "index = " + to_string(fIndex); | 
| 47             separator = ", "; | 44             separator = ", "; | 
| 48         } | 45         } | 
| 49         if (fSet >= 0) { | 46         if (fSet >= 0) { | 
| 50             result += separator + "set = " + to_string(fSet); | 47             result += separator + "set = " + to_string(fSet); | 
| 51             separator = ", "; | 48             separator = ", "; | 
| 52         } | 49         } | 
| 53         if (fBuiltin >= 0) { | 50         if (fBuiltin >= 0) { | 
| 54             result += separator + "builtin = " + to_string(fBuiltin); | 51             result += separator + "builtin = " + to_string(fBuiltin); | 
| 55             separator = ", "; | 52             separator = ", "; | 
| 56         } | 53         } | 
| 57         if (fOriginUpperLeft) { | 54         if (fOriginUpperLeft) { | 
| 58             result += separator + "origin_upper_left"; | 55             result += separator + "origin_upper_left"; | 
| 59             separator = ", "; | 56             separator = ", "; | 
| 60         } | 57         } | 
| 61         if (fOverrideCoverage) { |  | 
| 62             result += separator + "override_coverage"; |  | 
| 63             separator = ", "; |  | 
| 64         } |  | 
| 65         if (fBlendSupportAllEquations) { |  | 
| 66             result += separator + "blend_support_all_equations"; |  | 
| 67             separator = ", "; |  | 
| 68         } |  | 
| 69         if (result.length() > 0) { | 58         if (result.length() > 0) { | 
| 70             result = "layout (" + result + ")"; | 59             result = "layout (" + result + ")"; | 
| 71         } | 60         } | 
| 72         return result; | 61         return result; | 
| 73     } | 62     } | 
| 74 | 63 | 
| 75     const int fLocation; | 64     const int fLocation; | 
| 76     const int fBinding; | 65     const int fBinding; | 
| 77     const int fIndex; | 66     const int fIndex; | 
| 78     const int fSet; | 67     const int fSet; | 
| 79     const int fBuiltin; | 68     const int fBuiltin; | 
| 80     const bool fOriginUpperLeft; | 69     const bool fOriginUpperLeft; | 
| 81     const bool fOverrideCoverage; |  | 
| 82     const bool fBlendSupportAllEquations; |  | 
| 83 }; | 70 }; | 
| 84 | 71 | 
| 85 } // namespace | 72 } // namespace | 
| 86 | 73 | 
| 87 #endif | 74 #endif | 
| OLD | NEW | 
|---|