DRTVWR-558: Generalize LLEventDispatcher::add() constraints.

Instead of checking whether an add() parameter is exactly LLSD or LLSDMap,
check whether it's convertible to LLSD -- which handles those cases and more.

(cherry picked from commit fa168c11f64771dadc5df86d14ca2f07eba3b8ba)
meow-7.2.2
Nat Goodspeed 2022-04-06 22:19:10 -04:00
parent f134eace91
commit 4e7b4bab79
1 changed files with 4 additions and 8 deletions

View File

@ -192,8 +192,7 @@ public:
template<typename Method, typename InstanceGetter>
typename std::enable_if<
boost::function_types::is_member_function_pointer<Method>::value &&
! std::is_same<InstanceGetter, LLSD>::value &&
! std::is_same<InstanceGetter, LLSDMap>::value
! std::is_convertible<InstanceGetter, LLSD>::value
>::type add(const std::string& name,
const std::string& desc,
Method f,
@ -247,8 +246,7 @@ public:
template<typename Method, typename InstanceGetter>
typename std::enable_if<
boost::function_types::is_member_function_pointer<Method>::value &&
! std::is_same<InstanceGetter, LLSD>::value &&
! std::is_same<InstanceGetter, LLSDMap>::value
! std::is_convertible<InstanceGetter, LLSD>::value
>::type add(const std::string& name,
const std::string& desc,
Method f,
@ -492,8 +490,7 @@ LLEventDispatcher::add(const std::string& name, const std::string& desc, Functio
template<typename Method, typename InstanceGetter>
typename std::enable_if<
boost::function_types::is_member_function_pointer<Method>::value &&
! std::is_same<InstanceGetter, LLSD>::value &&
! std::is_same<InstanceGetter, LLSDMap>::value
! std::is_convertible<InstanceGetter, LLSD>::value
>::type
LLEventDispatcher::add(const std::string& name, const std::string& desc, Method f,
const InstanceGetter& getter)
@ -516,8 +513,7 @@ LLEventDispatcher::add(const std::string& name, const std::string& desc, Functio
template<typename Method, typename InstanceGetter>
typename std::enable_if<
boost::function_types::is_member_function_pointer<Method>::value &&
! std::is_same<InstanceGetter, LLSD>::value &&
! std::is_same<InstanceGetter, LLSDMap>::value
! std::is_convertible<InstanceGetter, LLSD>::value
>::type
LLEventDispatcher::add(const std::string& name, const std::string& desc, Method f,
const InstanceGetter& getter,