| 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_CONTEXT | 8 #ifndef SKSL_CONTEXT | 
| 9 #define SKSL_CONTEXT | 9 #define SKSL_CONTEXT | 
| 10 | 10 | 
| 11 #include "ir/SkSLType.h" | 11 #include "ir/SkSLType.h" | 
|  | 12 #include "ir/SkSLExpression.h" | 
| 12 | 13 | 
| 13 namespace SkSL { | 14 namespace SkSL { | 
| 14 | 15 | 
| 15 /** | 16 /** | 
| 16  * Contains compiler-wide objects, which currently means the core types. | 17  * Contains compiler-wide objects, which currently means the core types. | 
| 17  */ | 18  */ | 
| 18 class Context { | 19 class Context { | 
| 19 public: | 20 public: | 
| 20     Context() | 21     Context() | 
| 21     : fVoid_Type(new Type("void")) | 22     : fVoid_Type(new Type("void")) | 
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 107                                    fVec4_Type.get() })) | 108                                    fVec4_Type.get() })) | 
| 108     , fGVec_Type(new Type("$gvec")) | 109     , fGVec_Type(new Type("$gvec")) | 
| 109     , fGVec2_Type(new Type("$gvec2")) | 110     , fGVec2_Type(new Type("$gvec2")) | 
| 110     , fGVec3_Type(new Type("$gvec3")) | 111     , fGVec3_Type(new Type("$gvec3")) | 
| 111     , fGVec4_Type(new Type("$gvec4", static_type(*fVec4_Type))) | 112     , fGVec4_Type(new Type("$gvec4", static_type(*fVec4_Type))) | 
| 112     , fDVec_Type(new Type("$dvec")) | 113     , fDVec_Type(new Type("$dvec")) | 
| 113     , fIVec_Type(new Type("$ivec")) | 114     , fIVec_Type(new Type("$ivec")) | 
| 114     , fUVec_Type(new Type("$uvec")) | 115     , fUVec_Type(new Type("$uvec")) | 
| 115     , fBVec_Type(new Type("$bvec", { fBVec2_Type.get(), fBVec2_Type.get(), fBVec
     3_Type.get(), | 116     , fBVec_Type(new Type("$bvec", { fBVec2_Type.get(), fBVec2_Type.get(), fBVec
     3_Type.get(), | 
| 116                                      fBVec4_Type.get() })) | 117                                      fBVec4_Type.get() })) | 
| 117     , fInvalid_Type(new Type("<INVALID>")) {} | 118     , fInvalid_Type(new Type("<INVALID>")) | 
|  | 119     , fDefined_Expression(new Defined(*fInvalid_Type)) {} | 
| 118 | 120 | 
| 119     static std::vector<const Type*> static_type(const Type& t) { | 121     static std::vector<const Type*> static_type(const Type& t) { | 
| 120         return { &t, &t, &t, &t }; | 122         return { &t, &t, &t, &t }; | 
| 121     } | 123     } | 
| 122 | 124 | 
| 123     const std::unique_ptr<Type> fVoid_Type; | 125     const std::unique_ptr<Type> fVoid_Type; | 
| 124 | 126 | 
| 125     const std::unique_ptr<Type> fDouble_Type; | 127     const std::unique_ptr<Type> fDouble_Type; | 
| 126     const std::unique_ptr<Type> fDVec2_Type; | 128     const std::unique_ptr<Type> fDVec2_Type; | 
| 127     const std::unique_ptr<Type> fDVec3_Type; | 129     const std::unique_ptr<Type> fDVec3_Type; | 
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 215     const std::unique_ptr<Type> fGVec2_Type; | 217     const std::unique_ptr<Type> fGVec2_Type; | 
| 216     const std::unique_ptr<Type> fGVec3_Type; | 218     const std::unique_ptr<Type> fGVec3_Type; | 
| 217     const std::unique_ptr<Type> fGVec4_Type; | 219     const std::unique_ptr<Type> fGVec4_Type; | 
| 218     const std::unique_ptr<Type> fDVec_Type; | 220     const std::unique_ptr<Type> fDVec_Type; | 
| 219     const std::unique_ptr<Type> fIVec_Type; | 221     const std::unique_ptr<Type> fIVec_Type; | 
| 220     const std::unique_ptr<Type> fUVec_Type; | 222     const std::unique_ptr<Type> fUVec_Type; | 
| 221 | 223 | 
| 222     const std::unique_ptr<Type> fBVec_Type; | 224     const std::unique_ptr<Type> fBVec_Type; | 
| 223 | 225 | 
| 224     const std::unique_ptr<Type> fInvalid_Type; | 226     const std::unique_ptr<Type> fInvalid_Type; | 
|  | 227 | 
|  | 228     // dummy expression used to mark that a variable has a value during dataflow
      analysis (when it | 
|  | 229     // could have several different values, or the analyzer is otherwise unable 
     to assign it a | 
|  | 230     // specific expression) | 
|  | 231     const std::unique_ptr<Expression> fDefined_Expression; | 
|  | 232 | 
|  | 233 private: | 
|  | 234     class Defined : public Expression { | 
|  | 235     public: | 
|  | 236         Defined(const Type& type) | 
|  | 237         : INHERITED(Position(), kDefined_Kind, type) {} | 
|  | 238 | 
|  | 239         virtual std::string description() const override { | 
|  | 240             return "<defined>"; | 
|  | 241         } | 
|  | 242 | 
|  | 243         typedef Expression INHERITED; | 
|  | 244     }; | 
| 225 }; | 245 }; | 
| 226 | 246 | 
| 227 } // namespace | 247 } // namespace | 
| 228 | 248 | 
| 229 #endif | 249 #endif | 
| OLD | NEW | 
|---|