diff options
Diffstat (limited to 'indra/llxuixml')
| -rw-r--r-- | indra/llxuixml/llinitparam.cpp | 41 | ||||
| -rw-r--r-- | indra/llxuixml/llinitparam.h | 61 | ||||
| -rw-r--r-- | indra/llxuixml/lltrans.h | 5 | ||||
| -rw-r--r-- | indra/llxuixml/lluicolor.cpp | 13 | ||||
| -rw-r--r-- | indra/llxuixml/lluicolor.h | 16 | 
5 files changed, 57 insertions, 79 deletions
| diff --git a/indra/llxuixml/llinitparam.cpp b/indra/llxuixml/llinitparam.cpp index 1b867b79c9..6dd1f93baf 100644 --- a/indra/llxuixml/llinitparam.cpp +++ b/indra/llxuixml/llinitparam.cpp @@ -127,7 +127,7 @@ namespace LLInitParam  	bool BaseBlock::submitValue(const Parser::name_stack_t& name_stack, Parser& p, bool silent)  	{ -		if (!deserializeBlock(p, boost::make_iterator_range(name_stack.begin(), name_stack.end()))) +		if (!deserializeBlock(p, std::make_pair(name_stack.begin(), name_stack.end())))  		{  			if (!silent)  			{ @@ -304,11 +304,11 @@ namespace LLInitParam  	bool BaseBlock::deserializeBlock(Parser& p, Parser::name_stack_range_t name_stack)  	{  		BlockDescriptor& block_data = getBlockDescriptor(); -		bool names_left = !name_stack.empty(); +		bool names_left = name_stack.first != name_stack.second;  		if (names_left)  		{ -			const std::string& top_name = name_stack.front().first; +			const std::string& top_name = name_stack.first->first;  			ParamDescriptor::deserialize_func_t deserialize_func = NULL;  			Param* paramp = NULL; @@ -331,10 +331,11 @@ namespace LLInitParam  				}  			} -			Parser::name_stack_range_t new_name_stack(++name_stack.begin(), name_stack.end()); +			Parser::name_stack_range_t new_name_stack(name_stack.first, name_stack.second); +			++new_name_stack.first;  			if (deserialize_func)  			{ -				return deserialize_func(*paramp, p, new_name_stack, name_stack.empty() ? -1 : name_stack.front().second); +				return deserialize_func(*paramp, p, new_name_stack, name_stack.first == name_stack.second ? -1 : name_stack.first->second);  			}  		} @@ -346,7 +347,7 @@ namespace LLInitParam  			Param* paramp = getParamFromHandle((*it)->mParamHandle);  			ParamDescriptor::deserialize_func_t deserialize_func = (*it)->mDeserializeFunc; -			if (deserialize_func && deserialize_func(*paramp, p, name_stack, name_stack.empty() ? -1 : name_stack.front().second)) +			if (deserialize_func && deserialize_func(*paramp, p, name_stack, name_stack.first == name_stack.second ? -1 : name_stack.first->second))  			{  				mLastChangedParam = (*it)->mParamHandle;  				return true; @@ -499,33 +500,7 @@ namespace LLInitParam  		return param_changed;  	} - -	template<> -	bool ParamCompare<boost::function<void (const std::string &,void *)> >::equals( -	   const boost::function<void (const std::string &,void *)> &a, -	   const boost::function<void (const std::string &,void *)> &b) -	{ -		return false; -	} - -	template<> -	bool ParamCompare<boost::function<void (const LLSD &,const LLSD &)> >::equals( -	   const boost::function<void (const LLSD &,const LLSD &)> &a, -	   const boost::function<void (const LLSD &,const LLSD &)> &b) -	{ -		return false; -	} - -	template<> -	bool ParamCompare<boost::function<void (void)> >::equals( -		const boost::function<void (void)> &a, -		const boost::function<void (void)> &b) -	{ -		return false; -	} - -	template<> -	bool ParamCompare<LLSD>::equals(const LLSD &a, const LLSD &b) +	bool ParamCompare<LLSD, false>::equals(const LLSD &a, const LLSD &b)  	{  		return false;  	} diff --git a/indra/llxuixml/llinitparam.h b/indra/llxuixml/llinitparam.h index 88bc430504..b280dfdf63 100644 --- a/indra/llxuixml/llinitparam.h +++ b/indra/llxuixml/llinitparam.h @@ -39,25 +39,31 @@  #include <stddef.h>  #include <boost/function.hpp>  #include <boost/bind.hpp> -#include <boost/range/iterator_range.hpp> +#include <boost/type_traits/is_convertible.hpp>  #include "llregistry.h"  #include "llmemory.h"  namespace LLInitParam  { -    template <typename T>  -    class ParamCompare { -    public: -    	static bool equals(const T &a, const T &b); +	template <typename T, bool IS_BOOST_FUNCTION = boost::is_convertible<T, boost::function_base>::value > +    struct ParamCompare  +	{ +    	static bool equals(const T &a, const T &b) +		{ +			return a == b; +		}      }; -    template<class T> -    bool ParamCompare<T>::equals(const T &a, const T&b) -    { -    	return a == b; -    } - +	// boost function types are not comparable +	template<typename T> +	struct ParamCompare<T, true> +	{ +		static bool equals(const T&a, const T &b) +		{ +			return false; +		} +	};  	// default constructor adaptor for InitParam Values  	// constructs default instances of the given type, returned by const reference @@ -192,7 +198,7 @@ namespace LLInitParam  		};  		typedef std::vector<std::pair<std::string, S32> >			name_stack_t; -		typedef boost::iterator_range<name_stack_t::const_iterator>	name_stack_range_t; +		typedef std::pair<name_stack_t::const_iterator, name_stack_t::const_iterator>	name_stack_range_t;  		typedef std::vector<std::string>							possible_values_t;  		typedef boost::function<bool (void*)>															parser_read_func_t; @@ -535,7 +541,7 @@ namespace LLInitParam  		{   			self_t& typed_param = static_cast<self_t&>(param);  			// no further names in stack, attempt to parse value now -			if (name_stack.empty()) +			if (name_stack.first == name_stack.second)  			{  				if (parser.readValue<T>(typed_param.mData.mValue))  				{ @@ -886,7 +892,7 @@ namespace LLInitParam  			self_t& typed_param = static_cast<self_t&>(param);  			value_t value;  			// no further names in stack, attempt to parse value now -			if (name_stack.empty()) +			if (name_stack.first == name_stack.second)  			{  				// attempt to read value directly  				if (parser.readValue<value_t>(value)) @@ -1541,7 +1547,7 @@ namespace LLInitParam  			static bool deserializeParam(Param& param, Parser& parser, const Parser::name_stack_range_t& name_stack, S32 generation)  			{ -				if (name_stack.empty()) +				if (name_stack.first == name_stack.second)  				{  					//std::string message = llformat("Deprecated value %s ignored", getName().c_str());  					//parser.parserWarning(message); @@ -1600,7 +1606,7 @@ namespace LLInitParam  		{  			self_t& typed_param = static_cast<self_t&>(param);  			// type to apply parse direct value T -			if (name_stack.empty()) +			if (name_stack.first == name_stack.second)  			{  				if(parser.readValue<T>(typed_param.mData.mValue))  				{ @@ -1811,24 +1817,11 @@ namespace LLInitParam  		}  	}; -    template<> -	bool ParamCompare<boost::function<void (const std::string &,void *)> >::equals( -		const boost::function<void (const std::string &,void *)> &a, -		const boost::function<void (const std::string &,void *)> &b); -	 -	template<> -	bool ParamCompare<boost::function<void (const LLSD &,const LLSD &)> >::equals( -		const boost::function<void (const LLSD &,const LLSD &)> &a, -		const boost::function<void (const LLSD &,const LLSD &)> &b); - -	template<> -	bool ParamCompare<boost::function<void (void)> >::equals( -		const boost::function<void (void)> &a, -		const boost::function<void (void)> &b); - - -	template<> -	bool ParamCompare<LLSD>::equals(const LLSD &a, const LLSD &b); +	template<>  +	struct ParamCompare<LLSD, false> +	{ +		static bool equals(const LLSD &a, const LLSD &b); +	};  }  #endif // LL_LLPARAM_H diff --git a/indra/llxuixml/lltrans.h b/indra/llxuixml/lltrans.h index 79df5802e5..856b9e04fc 100644 --- a/indra/llxuixml/lltrans.h +++ b/indra/llxuixml/lltrans.h @@ -103,6 +103,11 @@ public:  		return findString(result, xml_desc, empty);  	} +        static std::string getKeyboardString(const char* keystring) +        { +                // These map directly - no need to specialize +                return getString( ll_safe_string(keystring) ); +        }  	// get the default args  	static const LLStringUtil::format_map_t& getDefaultArgs() diff --git a/indra/llxuixml/lluicolor.cpp b/indra/llxuixml/lluicolor.cpp index fe02907e14..424d878a6b 100644 --- a/indra/llxuixml/lluicolor.cpp +++ b/indra/llxuixml/lluicolor.cpp @@ -60,14 +60,9 @@ bool LLUIColor::isReference() const  namespace LLInitParam  {  	// used to detect equivalence with default values on export -	template<> -	class ParamCompare<LLUIColor> +	bool ParamCompare<LLUIColor, false>::equals(const LLUIColor &a, const LLUIColor &b)  	{ -	public: -		static bool equals(const LLUIColor &a, const LLUIColor &b) -		{ -			// do not detect value equivalence, treat pointers to colors as distinct from color values -			return (a.mColorPtr == NULL && b.mColorPtr == NULL ? a.mColor == b.mColor : a.mColorPtr == b.mColorPtr); -		} -	}; +		// do not detect value equivalence, treat pointers to colors as distinct from color values +		return (a.mColorPtr == NULL && b.mColorPtr == NULL ? a.mColor == b.mColor : a.mColorPtr == b.mColorPtr); +	}  } diff --git a/indra/llxuixml/lluicolor.h b/indra/llxuixml/lluicolor.h index 365f61003b..fb9c6b9161 100644 --- a/indra/llxuixml/lluicolor.h +++ b/indra/llxuixml/lluicolor.h @@ -11,11 +11,12 @@  #define LL_LLUICOLOR_H_  #include "v4color.h" +#include <boost/type_traits/integral_constant.hpp> // for boost::false_type  namespace LLInitParam  { -	template<typename T> -	class ParamCompare; +	template<typename T, bool> +	struct ParamCompare;  }  class LLUIColor @@ -36,10 +37,19 @@ public:  	bool isReference() const;  private: -	friend class LLInitParam::ParamCompare<LLUIColor>; +	friend struct LLInitParam::ParamCompare<LLUIColor, false>;  	const LLColor4* mColorPtr;  	LLColor4 mColor;  }; +namespace LLInitParam +{ +	template<> +	struct ParamCompare<LLUIColor, false> +	{ +		static bool equals(const class LLUIColor& a, const class LLUIColor& b); +	}; +} +  #endif | 
