Index: ps/trunk/source/graphics/ShaderDefines.h =================================================================== --- ps/trunk/source/graphics/ShaderDefines.h +++ ps/trunk/source/graphics/ShaderDefines.h @@ -106,6 +106,8 @@ size_t hash; void RecalcHash(); + + static bool NameLess(const Item& a, const Item& b); }; struct SItemsHash Index: ps/trunk/source/graphics/ShaderDefines.cpp =================================================================== --- ps/trunk/source/graphics/ShaderDefines.cpp +++ ps/trunk/source/graphics/ShaderDefines.cpp @@ -24,6 +24,7 @@ #include "maths/Vector4D.h" #include "ps/ThreadUtil.h" +#include #include namespace std @@ -54,28 +55,10 @@ } template -struct ItemNameCmp +bool CShaderParams::SItems::NameLess(const Item& a, const Item& b) { - typedef typename CShaderParams::SItems::Item Item; - - typedef Item first_argument_type; - typedef Item second_argument_type; - bool operator()(const Item& a, const Item& b) const - { - return a.first < b.first; - } -}; - -template -struct ItemNameGeq -{ - typedef typename CShaderParams::SItems::Item Item; - - bool operator()(const Item& a, const Item& b) const - { - return !(b.first < a.first); - } -}; + return a.first < b.first; +} template typename CShaderParams::SItems* CShaderParams::GetInterned(const SItems& items) @@ -88,8 +71,7 @@ // Sanity test: the items list is meant to be sorted by name. // This is a reasonable place to verify that, since this will be called once per distinct SItems. - typedef ItemNameCmp Cmp; - ENSURE(std::adjacent_find(items.items.begin(), items.items.end(), std::not_fn(Cmp())) == items.items.end()); + ENSURE(std::is_sorted(items.items.begin(), items.items.end(), SItems::NameLess)); std::shared_ptr ptr = std::make_shared(items); s_InternedItems.insert(std::make_pair(items, ptr)); @@ -152,7 +134,7 @@ params.m_Items->items.begin(), params.m_Items->items.end(), m_Items->items.begin(), m_Items->items.end(), std::inserter(items.items, items.items.begin()), - ItemNameCmp()); + SItems::NameLess); items.RecalcHash(); m_Items = GetInterned(items); }