diff options
Diffstat (limited to 'Source/ThirdParty/ANGLE/src/compiler/SymbolTable.h')
-rw-r--r-- | Source/ThirdParty/ANGLE/src/compiler/SymbolTable.h | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/Source/ThirdParty/ANGLE/src/compiler/SymbolTable.h b/Source/ThirdParty/ANGLE/src/compiler/SymbolTable.h index b1a80b5..38bc657 100644 --- a/Source/ThirdParty/ANGLE/src/compiler/SymbolTable.h +++ b/Source/ThirdParty/ANGLE/src/compiler/SymbolTable.h @@ -94,7 +94,10 @@ public: void shareConstPointer( ConstantUnion *constArray) { - delete unionArray; + if (unionArray == constArray) + return; + + delete[] unionArray; unionArray = constArray; } TVariable(const TVariable&, TStructureMap& remapper); // copy constructor @@ -156,14 +159,18 @@ public: const TString& getMangledName() const { return mangledName; } const TType& getReturnType() const { return returnType; } + void relateToOperator(TOperator o) { op = o; } TOperator getBuiltInOp() const { return op; } + + void relateToExtension(const TString& ext) { extension = ext; } + const TString& getExtension() const { return extension; } + void setDefined() { defined = true; } bool isDefined() { return defined; } - int getParamCount() const { return static_cast<int>(parameters.size()); } - TParameter& operator [](int i) { return parameters[i]; } - const TParameter& operator [](int i) const { return parameters[i]; } + int getParamCount() const { return static_cast<int>(parameters.size()); } + const TParameter& getParam(int i) const { return parameters[i]; } virtual void dump(TInfoSink &infoSink) const; TFunction(const TFunction&, TStructureMap& remapper); @@ -175,6 +182,7 @@ protected: TType returnType; TString mangledName; TOperator op; + TString extension; bool defined; }; @@ -221,6 +229,7 @@ public: } void relateToOperator(const char* name, TOperator op); + void relateToExtension(const char* name, const TString& ext); void dump(TInfoSink &infoSink) const; TSymbolTableLevel* clone(TStructureMap& remapper); @@ -289,8 +298,16 @@ public: return symbol; } - TSymbolTableLevel* getGlobalLevel() { assert(table.size() >= 2); return table[1]; } - void relateToOperator(const char* name, TOperator op) { table[0]->relateToOperator(name, op); } + TSymbolTableLevel* getGlobalLevel() { + assert(table.size() >= 2); + return table[1]; + } + void relateToOperator(const char* name, TOperator op) { + table[0]->relateToOperator(name, op); + } + void relateToExtension(const char* name, const TString& ext) { + table[0]->relateToExtension(name, ext); + } int getMaxSymbolId() { return uniqueId; } void dump(TInfoSink &infoSink) const; void copyTable(const TSymbolTable& copyOf); |