diff --git a/glslang/Include/Common.h b/glslang/Include/Common.h index 3580a6d0..468e56c1 100644 --- a/glslang/Include/Common.h +++ b/glslang/Include/Common.h @@ -93,9 +93,9 @@ typedef pool_allocator TStringAllocator; typedef std::basic_string , TStringAllocator> TString; // Repackage the std::hash for use by unordered map/set with a TString key. -struct TStringHash { - size_t operator()(const TString& string) const { return std::hash()(string); } -}; +//struct TStringHash { +// size_t operator()(const TString& string) const { return std::hash()(string); } +//}; inline TString* NewPoolTString(const char* s) { @@ -128,31 +128,14 @@ public: }; template class TList : public std::list > { -public: - typedef typename std::list >::size_type size_type; - TList() : std::list >() {} - TList(const pool_allocator& a) : std::list >(a) {} - TList(size_type i): std::list >(i) {} }; template > class TMap : public std::map > > { -public: - typedef pool_allocator > tAllocator; - - TMap() : std::map() {} - // use correct two-stage name lookup supported in gcc 3.4 and above - TMap(const tAllocator& a) : std::map(TBaseMap::key_compare(), a) {} }; -template , class PRED = std::equal_to > +template , class PRED = std::equal_to > class TUnorderedMap : public std::unordered_map > > { -public: - typedef pool_allocator > tAllocator; - - TUnorderedMap() : std::unordered_map() {} - // use correct two-stage name lookup supported in gcc 3.4 and above - TUnorderedMap(const tAllocator& a) : std::unordered_map(TBaseMap::key_compare(), a) {} }; // diff --git a/glslang/MachineIndependent/ParseHelper.h b/glslang/MachineIndependent/ParseHelper.h index d3a1e113..42ea501c 100644 --- a/glslang/MachineIndependent/ParseHelper.h +++ b/glslang/MachineIndependent/ParseHelper.h @@ -306,7 +306,8 @@ protected: TInputScanner* currentScanner; int numErrors; // number of compile-time errors encountered bool parsingBuiltins; // true if parsing built-in symbols/functions - TUnorderedMap extensionBehavior; // for each extension string, what its current behavior is set to +// need portable TStringHash TUnorderedMap extensionBehavior; // for each extension string, what its current behavior is set to + TMap extensionBehavior; // for each extension string, what its current behavior is set to static const int maxSamplerIndex = EsdNumDims * (EbtNumTypes * (2 * 2 * 2)); // see computeSamplerTypeIndex() TPrecisionQualifier defaultSamplerPrecision[maxSamplerIndex]; bool afterEOF; diff --git a/glslang/MachineIndependent/preprocessor/PpContext.h b/glslang/MachineIndependent/preprocessor/PpContext.h index 269312bb..f35f4515 100644 --- a/glslang/MachineIndependent/preprocessor/PpContext.h +++ b/glslang/MachineIndependent/preprocessor/PpContext.h @@ -192,7 +192,8 @@ public: }; MemoryPool *pool; - typedef TUnorderedMap TSymbolMap; + // need portable hash typedef TUnorderedMap TSymbolMap; + typedef TMap TSymbolMap; TSymbolMap symbols; // this has light use... just defined macros protected: @@ -436,7 +437,8 @@ protected: // // From PpAtom.cpp // - typedef TUnorderedMap TAtomMap; + // need portable TStringHash typedef TUnorderedMap TAtomMap; + typedef TMap TAtomMap; typedef TVector TStringMap; TAtomMap atomMap; TStringMap stringMap; diff --git a/glslang/MachineIndependent/reflection.h b/glslang/MachineIndependent/reflection.h index 1378a6a4..42f0ccd8 100644 --- a/glslang/MachineIndependent/reflection.h +++ b/glslang/MachineIndependent/reflection.h @@ -108,7 +108,8 @@ public: protected: friend class glslang::TLiveTraverser; - typedef std::unordered_map TNameToIndex; + // Need a TString hash: typedef std::unordered_map TNameToIndex; + typedef std::map TNameToIndex; typedef std::vector TMapIndexToReflection; TObjectReflection badReflection; // return for queries of -1 or generally out of range; has expected descriptions with in it for this