summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/llcommon/llsdutil.h51
-rw-r--r--indra/llcommon/tests/lleventdispatcher_test.cpp68
2 files changed, 62 insertions, 57 deletions
diff --git a/indra/llcommon/llsdutil.h b/indra/llcommon/llsdutil.h
index c873b17112..65c7297cbf 100644
--- a/indra/llcommon/llsdutil.h
+++ b/indra/llcommon/llsdutil.h
@@ -368,4 +368,55 @@ public:
}
};
+namespace llsd
+{
+
+/*****************************************************************************
+* BOOST_FOREACH() helpers for LLSD
+*****************************************************************************/
+/// Usage: BOOST_FOREACH(LLSD item, inArray(someLLSDarray)) { ... }
+class inArray
+{
+public:
+ inArray(const LLSD& array):
+ _array(array)
+ {}
+
+ typedef LLSD::array_const_iterator const_iterator;
+ typedef LLSD::array_iterator iterator;
+
+ iterator begin() { return _array.beginArray(); }
+ iterator end() { return _array.endArray(); }
+ const_iterator begin() const { return _array.beginArray(); }
+ const_iterator end() const { return _array.endArray(); }
+
+private:
+ LLSD _array;
+};
+
+/// MapEntry is what you get from dereferencing an LLSD::map_[const_]iterator.
+typedef std::map<LLSD::String, LLSD>::value_type MapEntry;
+
+/// Usage: BOOST_FOREACH([const] MapEntry& e, inMap(someLLSDmap)) { ... }
+class inMap
+{
+public:
+ inMap(const LLSD& map):
+ _map(map)
+ {}
+
+ typedef LLSD::map_const_iterator const_iterator;
+ typedef LLSD::map_iterator iterator;
+
+ iterator begin() { return _map.beginMap(); }
+ iterator end() { return _map.endMap(); }
+ const_iterator begin() const { return _map.beginMap(); }
+ const_iterator end() const { return _map.endMap(); }
+
+private:
+ LLSD _map;
+};
+
+} // namespace llsd
+
#endif // LL_LLSDUTIL_H
diff --git a/indra/llcommon/tests/lleventdispatcher_test.cpp b/indra/llcommon/tests/lleventdispatcher_test.cpp
index 2975707860..2241dea4ba 100644
--- a/indra/llcommon/tests/lleventdispatcher_test.cpp
+++ b/indra/llcommon/tests/lleventdispatcher_test.cpp
@@ -52,52 +52,6 @@ static std::ostringstream cout;
#endif
/*****************************************************************************
-* BOOST_FOREACH() helpers for LLSD
-*****************************************************************************/
-/// Usage: BOOST_FOREACH(LLSD item, inArray(someLLSDarray)) { ... }
-class inArray
-{
-public:
- inArray(const LLSD& array):
- _array(array)
- {}
-
- typedef LLSD::array_const_iterator const_iterator;
- typedef LLSD::array_iterator iterator;
-
- iterator begin() { return _array.beginArray(); }
- iterator end() { return _array.endArray(); }
- const_iterator begin() const { return _array.beginArray(); }
- const_iterator end() const { return _array.endArray(); }
-
-private:
- LLSD _array;
-};
-
-/// MapEntry is what you get from dereferencing an LLSD::map_[const_]iterator.
-typedef std::pair<const LLSD::String, LLSD> MapEntry;
-
-/// Usage: BOOST_FOREACH([const] MapEntry& e, inMap(someLLSDmap)) { ... }
-class inMap
-{
-public:
- inMap(const LLSD& map):
- _map(map)
- {}
-
- typedef LLSD::map_const_iterator const_iterator;
- typedef LLSD::map_iterator iterator;
-
- iterator begin() { return _map.beginMap(); }
- iterator end() { return _map.endMap(); }
- const_iterator begin() const { return _map.beginMap(); }
- const_iterator end() const { return _map.endMap(); }
-
-private:
- LLSD _map;
-};
-
-/*****************************************************************************
* Example data, functions, classes
*****************************************************************************/
// We don't need a whole lot of different arbitrary-params methods, just (no |
@@ -473,7 +427,7 @@ namespace tut
(LLSDArray(paramsb)(dftb_array_full)));
// std::cout << "zipped:\n" << zipped << '\n';
LLSD dft_maps_full, dft_maps_partial;
- foreach(LLSD ae, inArray(zipped))
+ foreach(LLSD ae, llsd::inArray(zipped))
{
LLSD dft_map_full;
LLSD params(ae[0]);
@@ -702,7 +656,7 @@ namespace tut
set_test_name("map-style registration with non-array params");
// Pass "param names" as scalar or as map
LLSD attempts(LLSDArray(17)(LLSDMap("pi", 3.14)("two", 2)));
- foreach(LLSD ae, inArray(attempts))
+ foreach(LLSD ae, llsd::inArray(attempts))
{
std::string threw;
try
@@ -801,7 +755,7 @@ namespace tut
{
set_test_name("query Callables with/out required params");
LLSD names(LLSDArray("free1")("Dmethod1")("Dcmethod1")("method1"));
- foreach(LLSD ae, inArray(names))
+ foreach(LLSD ae, llsd::inArray(names))
{
LLSD metadata(getMetadata(ae));
ensure_equals("name mismatch", metadata["name"], ae);
@@ -830,14 +784,14 @@ namespace tut
(5)(LLSDArray("freena_array")("smethodna_array")("methodna_array")))
(LLSDArray
(5)(LLSDArray("freenb_array")("smethodnb_array")("methodnb_array"))));
- foreach(LLSD ae, inArray(expected))
+ foreach(LLSD ae, llsd::inArray(expected))
{
LLSD::Integer arity(ae[0].asInteger());
LLSD names(ae[1]);
LLSD req(LLSD::emptyArray());
if (arity)
req[arity - 1] = LLSD();
- foreach(LLSD nm, inArray(names))
+ foreach(LLSD nm, llsd::inArray(names))
{
LLSD metadata(getMetadata(nm));
ensure_equals("name mismatch", metadata["name"], nm);
@@ -856,7 +810,7 @@ namespace tut
// - (Free function | non-static method), map style, no params (ergo
// no defaults)
LLSD names(LLSDArray("free0_map")("smethod0_map")("method0_map"));
- foreach(LLSD nm, inArray(names))
+ foreach(LLSD nm, llsd::inArray(names))
{
LLSD metadata(getMetadata(nm));
ensure_equals("name mismatch", metadata["name"], nm);
@@ -886,7 +840,7 @@ namespace tut
(LLSDArray("smethodnb_map_adft")("smethodnb_map_mdft"))
(LLSDArray("methodna_map_adft")("methodna_map_mdft"))
(LLSDArray("methodnb_map_adft")("methodnb_map_mdft")));
- foreach(LLSD eq, inArray(equivalences))
+ foreach(LLSD eq, llsd::inArray(equivalences))
{
LLSD adft(eq[0]);
LLSD mdft(eq[1]);
@@ -943,11 +897,11 @@ namespace tut
// Generate maps containing parameter names not provided by the
// dft[ab]_map_partial maps.
LLSD skipreqa(allreqa), skipreqb(allreqb);
- foreach(const MapEntry& me, inMap(dfta_map_partial))
+ foreach(const llsd::MapEntry& me, llsd::inMap(dfta_map_partial))
{
skipreqa.erase(me.first);
}
- foreach(const MapEntry& me, inMap(dftb_map_partial))
+ foreach(const llsd::MapEntry& me, llsd::inMap(dftb_map_partial))
{
skipreqb.erase(me.first);
}
@@ -989,7 +943,7 @@ namespace tut
(LLSDArray("freenb_map_mdft")("smethodnb_map_mdft")("methodnb_map_mdft"))
(LLSDArray(LLSD::emptyMap())(dftb_map_full)))); // required, optional
- foreach(LLSD grp, inArray(groups))
+ foreach(LLSD grp, llsd::inArray(groups))
{
// Internal structure of each group in 'groups':
LLSD names(grp[0]);
@@ -998,7 +952,7 @@ namespace tut
cout << "For " << names << ",\n" << "required:\n" << required << "\noptional:\n" << optional << std::endl;
// Loop through 'names'
- foreach(LLSD nm, inArray(names))
+ foreach(LLSD nm, llsd::inArray(names))
{
LLSD metadata(getMetadata(nm));
ensure_equals("name mismatch", metadata["name"], nm);