summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNat Goodspeed <nat@lindenlab.com>2023-06-06 10:04:26 -0400
committerNat Goodspeed <nat@lindenlab.com>2023-06-06 10:04:26 -0400
commitc4366378b61cacb9d87eb2917302fa17e9207491 (patch)
treee372c292fd0deff671a249ccd56e9dcb9549c695
parent1db7ac7139adf505be12308fd7ba2920f5beecde (diff)
SL-18837: Ditch Boost.Phoenix implicit lambda syntax.
It's cool to be able to write 'arg1 << "stuff" << var ...;' for a lambda accepting a std::ostream reference, but cascading compile errors mean it's no longer worth trying to make that work -- given actual C++ lambdas. Also clean up a lingering BOOST_FOREACH() and a boost::bind() while at it.
-rw-r--r--indra/llcommon/tests/llleap_test.cpp18
-rw-r--r--indra/llcommon/tests/llsdserialize_test.cpp21
2 files changed, 15 insertions, 24 deletions
diff --git a/indra/llcommon/tests/llleap_test.cpp b/indra/llcommon/tests/llleap_test.cpp
index 0c91db3e24..0fc741d9e1 100644
--- a/indra/llcommon/tests/llleap_test.cpp
+++ b/indra/llcommon/tests/llleap_test.cpp
@@ -18,8 +18,6 @@
#include <functional>
// external library headers
#include <boost/assign/list_of.hpp>
-#include <boost/phoenix/core/argument.hpp>
-#include <boost/phoenix/operator/bitwise.hpp> // operator<<()
// other Linden headers
#include "../test/lltut.h"
#include "../test/namedtempfile.h"
@@ -105,7 +103,7 @@ namespace tut
llleap_data():
reader(".py",
// This logic is adapted from vita.viewerclient.receiveEvent()
- boost::phoenix::placeholders::arg1 <<
+ [](std::ostream& out){ out <<
"import re\n"
"import os\n"
"import sys\n"
@@ -189,7 +187,7 @@ namespace tut
"def request(pump, data):\n"
" # we expect 'data' is a dict\n"
" data['reply'] = _reply\n"
- " send(pump, data)\n"),
+ " send(pump, data)\n";}),
// Get the actual pathname of the NamedExtTempFile and trim off
// the ".py" extension. (We could cache reader.getName() in a
// separate member variable, but I happen to know getName() just
@@ -383,7 +381,7 @@ namespace tut
AckAPI api;
Result result;
NamedExtTempFile script("py",
- boost::phoenix::placeholders::arg1 <<
+ [&](std::ostream& out){ out <<
"from " << reader_module << " import *\n"
// make a request on our little API
"request(pump='" << api.getName() << "', data={})\n"
@@ -391,7 +389,7 @@ namespace tut
"resp = get()\n"
"result = '' if resp == dict(pump=replypump(), data='ack')\\\n"
" else 'bad: ' + str(resp)\n"
- "send(pump='" << result.getName() << "', data=result)\n");
+ "send(pump='" << result.getName() << "', data=result)\n";});
waitfor(LLLeap::create(get_test_name(), sv(list_of(PYTHON)(script.getName()))));
result.ensure();
}
@@ -421,7 +419,7 @@ namespace tut
ReqIDAPI api;
Result result;
NamedExtTempFile script("py",
- boost::phoenix::placeholders::arg1 <<
+ [&](std::ostream& out){ out <<
"import sys\n"
"from " << reader_module << " import *\n"
// Note that since reader imports llsd, this
@@ -450,7 +448,7 @@ namespace tut
" if resp['data']['reqid'] != i:\n"
" result = 'expected reqid=%s in %s' % (i, resp)\n"
" break\n"
- "send(pump='" << result.getName() << "', data=result)\n");
+ "send(pump='" << result.getName() << "', data=result)\n";});
waitfor(LLLeap::create(get_test_name(), sv(list_of(PYTHON)(script.getName()))),
300); // needs more realtime than most tests
result.ensure();
@@ -464,7 +462,7 @@ namespace tut
ReqIDAPI api;
Result result;
NamedExtTempFile script("py",
- boost::phoenix::placeholders::arg1 <<
+ [&](std::ostream& out){ out <<
"import sys\n"
"from " << reader_module << " import *\n"
// Generate a very large string value.
@@ -516,7 +514,7 @@ namespace tut
" send('" << result.getName() << "',\n"
" 'at offset %s, expected %r but got %r' %\n"
" (start, large[start:end], echoed[start:end]))\n"
- "sys.exit(1)\n");
+ "sys.exit(1)\n";});
waitfor(LLLeap::create(test_name,
sv(list_of
(PYTHON)
diff --git a/indra/llcommon/tests/llsdserialize_test.cpp b/indra/llcommon/tests/llsdserialize_test.cpp
index a0b8519508..08bf7fbc51 100644
--- a/indra/llcommon/tests/llsdserialize_test.cpp
+++ b/indra/llcommon/tests/llsdserialize_test.cpp
@@ -45,13 +45,6 @@ typedef U32 uint32_t;
#endif
#include "boost/range.hpp"
-#include "boost/foreach.hpp"
-#include "boost/function.hpp"
-#include "boost/bind.hpp"
-#include "boost/phoenix/bind/bind_function.hpp"
-#include "boost/phoenix/core/argument.hpp"
-#include <boost/phoenix/operator/bitwise.hpp>
-using namespace boost::phoenix;
#include "../llsd.h"
#include "../llsdserialize.h"
@@ -1802,7 +1795,7 @@ namespace tut
// helper for test<3>
static void writeLLSDArray(std::ostream& out, const LLSD& array)
{
- BOOST_FOREACH(LLSD item, llsd::inArray(array))
+ for (const LLSD& item: llsd::inArray(array))
{
LLSDSerialize::toNotation(item, out);
// It's important to separate with newlines because Python's llsd
@@ -1842,21 +1835,21 @@ namespace tut
// Create an llsdXXXXXX file containing 'data' serialized to
// notation.
NamedTempFile file("llsd",
- // NamedTempFile's boost::function constructor
+ // NamedTempFile's function constructor
// takes a callable. To this callable it passes the
// std::ostream with which it's writing the
// NamedTempFile.
- boost::bind(writeLLSDArray, _1, cdata));
+ [&](std::ostream& out){ writeLLSDArray(out, cdata); });
python("read C++ notation",
- placeholders::arg1 <<
+ [&](std::ostream& out){ out <<
import_llsd <<
"def parse_each(iterable):\n"
" for item in iterable:\n"
" yield llsd.parse(item)\n" <<
pydata <<
// Don't forget raw-string syntax for Windows pathnames.
- "verify(parse_each(open(r'" << file.getName() << "', 'rb')))\n");
+ "verify(parse_each(open(r'" << file.getName() << "', 'rb')))\n";});
}
template<> template<>
@@ -1870,7 +1863,7 @@ namespace tut
NamedTempFile file("llsd", "");
python("write Python notation",
- placeholders::arg1 <<
+ [&](std::ostream& out){ out <<
import_llsd <<
"DATA = [\n"
" 17,\n"
@@ -1884,7 +1877,7 @@ namespace tut
// N.B. Using 'print' implicitly adds newlines.
"with open(r'" << file.getName() << "', 'w') as f:\n"
" for item in DATA:\n"
- " print(llsd.format_notation(item).decode(), file=f)\n");
+ " print(llsd.format_notation(item).decode(), file=f)\n";});
std::ifstream inf(file.getName().c_str());
LLSD item;