From 5647e745989d6c3e4387ec990a35c4308dd6b929 Mon Sep 17 00:00:00 2001 From: Richard Nelson Date: Wed, 6 Oct 2010 16:56:38 -0700 Subject: added param block support for empty/undefined elements in XML/LLSD respectively. This way or LLSD["foo"]; both define a default constructed value for the parameter named foo, useful in the Multiple case --- indra/llxuixml/llinitparam.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'indra/llxuixml/llinitparam.cpp') diff --git a/indra/llxuixml/llinitparam.cpp b/indra/llxuixml/llinitparam.cpp index 2c92539387..7ffcd91879 100644 --- a/indra/llxuixml/llinitparam.cpp +++ b/indra/llxuixml/llinitparam.cpp @@ -312,6 +312,13 @@ namespace LLInitParam } } + // if no match, and no names left on stack, this is just an existence assertion of this block + // verify by calling readValue with NoValue type, an inherently unparseable type + if (!names_left) + { + return p.readValue(NoValue()); + } + return false; } -- cgit v1.3 From a21be75f605822310d819dcb5c35157676b4f740 Mon Sep 17 00:00:00 2001 From: Monroe Linden Date: Wed, 6 Oct 2010 17:07:14 -0700 Subject: Fix for a compile error. Reviwed by Richard. --- indra/llxuixml/llinitparam.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'indra/llxuixml/llinitparam.cpp') diff --git a/indra/llxuixml/llinitparam.cpp b/indra/llxuixml/llinitparam.cpp index 7ffcd91879..bf2de9360a 100644 --- a/indra/llxuixml/llinitparam.cpp +++ b/indra/llxuixml/llinitparam.cpp @@ -316,7 +316,8 @@ namespace LLInitParam // verify by calling readValue with NoValue type, an inherently unparseable type if (!names_left) { - return p.readValue(NoValue()); + NoValue no_value; + return p.readValue(no_value); } return false; -- cgit v1.3 From 6c0e9432d027dfb363baf4eaff79a835e3e75b37 Mon Sep 17 00:00:00 2001 From: Richard Linden Date: Fri, 8 Oct 2010 12:18:16 -0700 Subject: potential fix for linux build --- indra/llui/llsdparam.cpp | 2 +- indra/llxuixml/llinitparam.cpp | 4 ++-- indra/llxuixml/llinitparam.h | 2 +- indra/llxuixml/llxuiparser.cpp | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) (limited to 'indra/llxuixml/llinitparam.cpp') diff --git a/indra/llui/llsdparam.cpp b/indra/llui/llsdparam.cpp index fae20a473e..9ad13054cb 100644 --- a/indra/llui/llsdparam.cpp +++ b/indra/llui/llsdparam.cpp @@ -45,7 +45,7 @@ LLParamSDParser::LLParamSDParser() if (sReadFuncs.empty()) { - registerParserFuncs(readNoValue, &LLParamSDParser::writeNoValue); + registerParserFuncs(readNoValue, &LLParamSDParser::writeNoValue); registerParserFuncs(readS32, &LLParamSDParser::writeTypedValue); registerParserFuncs(readU32, &LLParamSDParser::writeU32Param); registerParserFuncs(readF32, &LLParamSDParser::writeTypedValue); diff --git a/indra/llxuixml/llinitparam.cpp b/indra/llxuixml/llinitparam.cpp index bf2de9360a..fcdbaa4309 100644 --- a/indra/llxuixml/llinitparam.cpp +++ b/indra/llxuixml/llinitparam.cpp @@ -313,10 +313,10 @@ namespace LLInitParam } // if no match, and no names left on stack, this is just an existence assertion of this block - // verify by calling readValue with NoValue type, an inherently unparseable type + // verify by calling readValue with NoParamValue type, an inherently unparseable type if (!names_left) { - NoValue no_value; + NoParamValue no_value; return p.readValue(no_value); } diff --git a/indra/llxuixml/llinitparam.h b/indra/llxuixml/llinitparam.h index 66ef8e65cd..1f9045754a 100644 --- a/indra/llxuixml/llinitparam.h +++ b/indra/llxuixml/llinitparam.h @@ -279,7 +279,7 @@ namespace LLInitParam }; // used to indicate no matching value to a given name when parsing - struct NoValue{}; + struct NoParamValue{}; class BaseBlock; diff --git a/indra/llxuixml/llxuiparser.cpp b/indra/llxuixml/llxuiparser.cpp index 723a20f382..b321eaf7a6 100644 --- a/indra/llxuixml/llxuiparser.cpp +++ b/indra/llxuixml/llxuiparser.cpp @@ -382,7 +382,7 @@ LLXUIParser::LLXUIParser() { if (sXUIReadFuncs.empty()) { - registerParserFuncs(readNoValue, writeNoValue); + registerParserFuncs(readNoValue, writeNoValue); registerParserFuncs(readBoolValue, writeBoolValue); registerParserFuncs(readStringValue, writeStringValue); registerParserFuncs(readU8Value, writeU8Value); @@ -1078,7 +1078,7 @@ LLSimpleXUIParser::LLSimpleXUIParser(LLSimpleXUIParser::element_start_callback_t { if (sSimpleXUIReadFuncs.empty()) { - registerParserFuncs(readNoValue); + registerParserFuncs(readNoValue); registerParserFuncs(readBoolValue); registerParserFuncs(readStringValue); registerParserFuncs(readU8Value); -- cgit v1.3