From 5edb4f2171fb92ff64913459a63afb20474db25a Mon Sep 17 00:00:00 2001 From: Richard Nelson Date: Thu, 15 Oct 2009 19:56:45 +0000 Subject: removed requirement for specializing ParamCompare on boost::function types eliminated usage of iterator_range from LLInitParam made LLTextEditor::addChar consistent with truncate in counting text bytes (not including null terminator) EXT-1494 - Avatar profile description text truncated to 255 characters reviewed by Leyla --- indra/llxuixml/llinitparam.cpp | 41 ++++++---------------------- indra/llxuixml/llinitparam.h | 61 +++++++++++++++++++----------------------- indra/llxuixml/lluicolor.cpp | 13 +++------ indra/llxuixml/lluicolor.h | 16 ++++++++--- 4 files changed, 52 insertions(+), 79 deletions(-) (limited to 'indra/llxuixml') diff --git a/indra/llxuixml/llinitparam.cpp b/indra/llxuixml/llinitparam.cpp index 1b867b79c9..1abd411f37 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 >::equals( - const boost::function &a, - const boost::function &b) - { - return false; - } - - template<> - bool ParamCompare >::equals( - const boost::function &a, - const boost::function &b) - { - return false; - } - - template<> - bool ParamCompare >::equals( - const boost::function &a, - const boost::function &b) - { - return false; - } - - template<> - bool ParamCompare::equals(const LLSD &a, const LLSD &b) + bool ParamCompare::equals(const LLSD &a, const LLSD &b) { return false; } diff --git a/indra/llxuixml/llinitparam.h b/indra/llxuixml/llinitparam.h index 88bc430504..193d8c1f64 100644 --- a/indra/llxuixml/llinitparam.h +++ b/indra/llxuixml/llinitparam.h @@ -39,25 +39,31 @@ #include #include #include -#include +#include #include "llregistry.h" #include "llmemory.h" namespace LLInitParam { - template - class ParamCompare { - public: - static bool equals(const T &a, const T &b); + template ::type > + struct ParamCompare + { + static bool equals(const T &a, const T &b) + { + return a == b; + } }; - template - bool ParamCompare::equals(const T &a, const T&b) - { - return a == b; - } - + // boost function types are not comparable + template + struct ParamCompare + { + 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 > name_stack_t; - typedef boost::iterator_range name_stack_range_t; + typedef std::pair name_stack_range_t; typedef std::vector possible_values_t; typedef boost::function parser_read_func_t; @@ -535,7 +541,7 @@ namespace LLInitParam { self_t& typed_param = static_cast(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(typed_param.mData.mValue)) { @@ -886,7 +892,7 @@ namespace LLInitParam self_t& typed_param = static_cast(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)) @@ -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(param); // type to apply parse direct value T - if (name_stack.empty()) + if (name_stack.first == name_stack.second) { if(parser.readValue(typed_param.mData.mValue)) { @@ -1811,24 +1817,11 @@ namespace LLInitParam } }; - template<> - bool ParamCompare >::equals( - const boost::function &a, - const boost::function &b); - - template<> - bool ParamCompare >::equals( - const boost::function &a, - const boost::function &b); - - template<> - bool ParamCompare >::equals( - const boost::function &a, - const boost::function &b); - - - template<> - bool ParamCompare::equals(const LLSD &a, const LLSD &b); + template<> + struct ParamCompare + { + static bool equals(const LLSD &a, const LLSD &b); + }; } #endif // LL_LLPARAM_H diff --git a/indra/llxuixml/lluicolor.cpp b/indra/llxuixml/lluicolor.cpp index ef0fa5d634..0065edb309 100644 --- a/indra/llxuixml/lluicolor.cpp +++ b/indra/llxuixml/lluicolor.cpp @@ -58,14 +58,9 @@ bool LLUIColor::isReference() const namespace LLInitParam { // used to detect equivalence with default values on export - template<> - class ParamCompare + bool ParamCompare::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..aff81a695d 100644 --- a/indra/llxuixml/lluicolor.h +++ b/indra/llxuixml/lluicolor.h @@ -11,11 +11,12 @@ #define LL_LLUICOLOR_H_ #include "v4color.h" +#include // for boost::false_type namespace LLInitParam { - template - class ParamCompare; + template + struct ParamCompare; } class LLUIColor @@ -36,10 +37,19 @@ public: bool isReference() const; private: - friend class LLInitParam::ParamCompare; + friend struct LLInitParam::ParamCompare; const LLColor4* mColorPtr; LLColor4 mColor; }; +namespace LLInitParam +{ + template<> + struct ParamCompare + { + static bool equals(const class LLUIColor& a, const class LLUIColor& b); + }; +} + #endif -- cgit v1.2.3