Revert "Merge branch 'c++17' into DRTVWR-522-maint"
This reverts commitmaster203ea3a70a, reversing changes made to8e3f077886. # Conflicts: # indra/newview/llmachineid.cpp
parent
e3b869e6f1
commit
adcd08fbf4
|
|
@ -308,9 +308,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>f5a81594374c8a7f0825e2177510e079</string>
|
||||
<string>02e6a8207dcdaf243dcb6da19b8c3534</string>
|
||||
<key>url</key>
|
||||
<string>https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/82030/770590/colladadom-2.3.559710-darwin64-559710.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/64099/601302/colladadom-2.3.545362-darwin64-545362.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin64</string>
|
||||
|
|
@ -344,9 +344,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>5d0729b835d63b7fe69acdc6b7c60188</string>
|
||||
<string>8a02a10fc69c8f504dc5335644db184a</string>
|
||||
<key>url</key>
|
||||
<string>https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/82050/770692/colladadom-2.3.559710-windows-559710.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/64104/601313/colladadom-2.3.545362-windows-545362.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows</string>
|
||||
|
|
@ -356,16 +356,16 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>985e3081e41c76b6176d39e44d7fb4b8</string>
|
||||
<string>742180324fca7ab92b6a61a36aab4f9d</string>
|
||||
<key>url</key>
|
||||
<string>https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/82049/770686/colladadom-2.3.559710-windows64-559710.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/64103/601314/colladadom-2.3.545362-windows64-545362.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows64</string>
|
||||
</map>
|
||||
</map>
|
||||
<key>version</key>
|
||||
<string>2.3.559710</string>
|
||||
<string>2.3.545362</string>
|
||||
</map>
|
||||
<key>curl</key>
|
||||
<map>
|
||||
|
|
|
|||
|
|
@ -66,8 +66,7 @@ if (WINDOWS)
|
|||
# CP changed to only append the flag for 32bit builds - on 64bit builds,
|
||||
# locally at least, the build output is spammed with 1000s of 'D9002'
|
||||
# warnings about this switch being ignored.
|
||||
# We need std::string_view, but that's not available without /std:c++17.
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP /std:c++17")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
|
||||
if( ADDRESS_SIZE EQUAL 32 )
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /p:PreferredToolArchitecture=x64")
|
||||
endif()
|
||||
|
|
@ -176,7 +175,7 @@ if (DARWIN)
|
|||
# Until we decide to set -std=c++14 in viewer-build-variables/variables, set
|
||||
# it locally here: we want to at least prevent inadvertently reintroducing
|
||||
# viewer code that would fail with C++14.
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${DARWIN_extra_cstar_flags} -std=c++17")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${DARWIN_extra_cstar_flags} -std=c++14")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${DARWIN_extra_cstar_flags}")
|
||||
# NOTE: it's critical that the optimization flag is put in front.
|
||||
# NOTE: it's critical to have both CXX_FLAGS and C_FLAGS covered.
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
euclid 5/29/2020
|
||||
euclid 7/23/2020
|
||||
euclid 4/29/2021
|
||||
euclid 4/29/2021
|
||||
|
|
@ -413,6 +413,49 @@ public:
|
|||
static std::string typeString(Type type); // Return human-readable type as a string
|
||||
};
|
||||
|
||||
struct llsd_select_bool : public std::unary_function<LLSD, LLSD::Boolean>
|
||||
{
|
||||
LLSD::Boolean operator()(const LLSD& sd) const
|
||||
{
|
||||
return sd.asBoolean();
|
||||
}
|
||||
};
|
||||
struct llsd_select_integer : public std::unary_function<LLSD, LLSD::Integer>
|
||||
{
|
||||
LLSD::Integer operator()(const LLSD& sd) const
|
||||
{
|
||||
return sd.asInteger();
|
||||
}
|
||||
};
|
||||
struct llsd_select_real : public std::unary_function<LLSD, LLSD::Real>
|
||||
{
|
||||
LLSD::Real operator()(const LLSD& sd) const
|
||||
{
|
||||
return sd.asReal();
|
||||
}
|
||||
};
|
||||
struct llsd_select_float : public std::unary_function<LLSD, F32>
|
||||
{
|
||||
F32 operator()(const LLSD& sd) const
|
||||
{
|
||||
return (F32)sd.asReal();
|
||||
}
|
||||
};
|
||||
struct llsd_select_uuid : public std::unary_function<LLSD, LLSD::UUID>
|
||||
{
|
||||
LLSD::UUID operator()(const LLSD& sd) const
|
||||
{
|
||||
return sd.asUUID();
|
||||
}
|
||||
};
|
||||
struct llsd_select_string : public std::unary_function<LLSD, LLSD::String>
|
||||
{
|
||||
LLSD::String operator()(const LLSD& sd) const
|
||||
{
|
||||
return sd.asString();
|
||||
}
|
||||
};
|
||||
|
||||
LL_COMMON_API std::ostream& operator<<(std::ostream& s, const LLSD& llsd);
|
||||
|
||||
namespace llsd
|
||||
|
|
|
|||
|
|
@ -40,6 +40,30 @@
|
|||
// <ND> For strcmp
|
||||
#include <string.h>
|
||||
#endif
|
||||
// Use to compare the first element only of a pair
|
||||
// e.g. typedef std::set<std::pair<int, Data*>, compare_pair<int, Data*> > some_pair_set_t;
|
||||
template <typename T1, typename T2>
|
||||
struct compare_pair_first
|
||||
{
|
||||
bool operator()(const std::pair<T1, T2>& a, const std::pair<T1, T2>& b) const
|
||||
{
|
||||
return a.first < b.first;
|
||||
}
|
||||
};
|
||||
|
||||
template <typename T1, typename T2>
|
||||
struct compare_pair_greater
|
||||
{
|
||||
bool operator()(const std::pair<T1, T2>& a, const std::pair<T1, T2>& b) const
|
||||
{
|
||||
if (!(a.first < b.first))
|
||||
return true;
|
||||
else if (!(b.first < a.first))
|
||||
return false;
|
||||
else
|
||||
return !(a.second < b.second);
|
||||
}
|
||||
};
|
||||
|
||||
// Use to compare the contents of two pointers (e.g. std::string*)
|
||||
template <typename T>
|
||||
|
|
@ -99,6 +123,58 @@ struct DeletePairedPointerArray
|
|||
};
|
||||
|
||||
|
||||
// Alternate version of the above so that has a more cumbersome
|
||||
// syntax, but it can be used with compositional functors.
|
||||
// NOTE: The functor retuns a bool because msdev bombs during the
|
||||
// composition if you return void. Once we upgrade to a newer
|
||||
// compiler, the second unary_function template parameter can be set
|
||||
// to void.
|
||||
//
|
||||
// Here's a snippet showing how you use this object:
|
||||
//
|
||||
// typedef std::map<int, widget*> map_type;
|
||||
// map_type widget_map;
|
||||
// ... // add elements
|
||||
// // delete them all
|
||||
// for_each(widget_map.begin(),
|
||||
// widget_map.end(),
|
||||
// llcompose1(DeletePointerFunctor<widget>(),
|
||||
// llselect2nd<map_type::value_type>()));
|
||||
|
||||
template<typename T>
|
||||
struct DeletePointerFunctor : public std::unary_function<T*, bool>
|
||||
{
|
||||
bool operator()(T* ptr) const
|
||||
{
|
||||
delete ptr;
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
// See notes about DeleteArray for why you should consider avoiding this.
|
||||
template<typename T>
|
||||
struct DeleteArrayFunctor : public std::unary_function<T*, bool>
|
||||
{
|
||||
bool operator()(T* ptr) const
|
||||
{
|
||||
delete[] ptr;
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
// CopyNewPointer is a simple helper which accepts a pointer, and
|
||||
// returns a new pointer built with the copy constructor. Example:
|
||||
//
|
||||
// transform(in.begin(), in.end(), out.end(), CopyNewPointer());
|
||||
|
||||
struct CopyNewPointer
|
||||
{
|
||||
template<typename T> T* operator()(const T* ptr) const
|
||||
{
|
||||
return new T(*ptr);
|
||||
}
|
||||
};
|
||||
|
||||
template<typename T, typename ALLOC>
|
||||
void delete_and_clear(std::list<T*, ALLOC>& list)
|
||||
{
|
||||
|
|
@ -287,6 +363,161 @@ OutputIter ll_transform_n(
|
|||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
*
|
||||
* Copyright (c) 1994
|
||||
* Hewlett-Packard Company
|
||||
*
|
||||
* Permission to use, copy, modify, distribute and sell this software
|
||||
* and its documentation for any purpose is hereby granted without fee,
|
||||
* provided that the above copyright notice appear in all copies and
|
||||
* that both that copyright notice and this permission notice appear
|
||||
* in supporting documentation. Hewlett-Packard Company makes no
|
||||
* representations about the suitability of this software for any
|
||||
* purpose. It is provided "as is" without express or implied warranty.
|
||||
*
|
||||
*
|
||||
* Copyright (c) 1996-1998
|
||||
* Silicon Graphics Computer Systems, Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, distribute and sell this software
|
||||
* and its documentation for any purpose is hereby granted without fee,
|
||||
* provided that the above copyright notice appear in all copies and
|
||||
* that both that copyright notice and this permission notice appear
|
||||
* in supporting documentation. Silicon Graphics makes no
|
||||
* representations about the suitability of this software for any
|
||||
* purpose. It is provided "as is" without express or implied warranty.
|
||||
*/
|
||||
|
||||
|
||||
// helper to deal with the fact that MSDev does not package
|
||||
// select... with the stl. Look up usage on the sgi website.
|
||||
|
||||
template <class _Pair>
|
||||
struct _LLSelect1st : public std::unary_function<_Pair, typename _Pair::first_type> {
|
||||
const typename _Pair::first_type& operator()(const _Pair& __x) const {
|
||||
return __x.first;
|
||||
}
|
||||
};
|
||||
|
||||
template <class _Pair>
|
||||
struct _LLSelect2nd : public std::unary_function<_Pair, typename _Pair::second_type>
|
||||
{
|
||||
const typename _Pair::second_type& operator()(const _Pair& __x) const {
|
||||
return __x.second;
|
||||
}
|
||||
};
|
||||
|
||||
template <class _Pair> struct llselect1st : public _LLSelect1st<_Pair> {};
|
||||
template <class _Pair> struct llselect2nd : public _LLSelect2nd<_Pair> {};
|
||||
|
||||
// helper to deal with the fact that MSDev does not package
|
||||
// compose... with the stl. Look up usage on the sgi website.
|
||||
|
||||
template <class _Operation1, class _Operation2>
|
||||
class ll_unary_compose :
|
||||
public std::unary_function<typename _Operation2::argument_type,
|
||||
typename _Operation1::result_type>
|
||||
{
|
||||
protected:
|
||||
_Operation1 __op1;
|
||||
_Operation2 __op2;
|
||||
public:
|
||||
ll_unary_compose(const _Operation1& __x, const _Operation2& __y)
|
||||
: __op1(__x), __op2(__y) {}
|
||||
typename _Operation1::result_type
|
||||
operator()(const typename _Operation2::argument_type& __x) const {
|
||||
return __op1(__op2(__x));
|
||||
}
|
||||
};
|
||||
|
||||
template <class _Operation1, class _Operation2>
|
||||
inline ll_unary_compose<_Operation1,_Operation2>
|
||||
llcompose1(const _Operation1& __op1, const _Operation2& __op2)
|
||||
{
|
||||
return ll_unary_compose<_Operation1,_Operation2>(__op1, __op2);
|
||||
}
|
||||
|
||||
template <class _Operation1, class _Operation2, class _Operation3>
|
||||
class ll_binary_compose
|
||||
: public std::unary_function<typename _Operation2::argument_type,
|
||||
typename _Operation1::result_type> {
|
||||
protected:
|
||||
_Operation1 _M_op1;
|
||||
_Operation2 _M_op2;
|
||||
_Operation3 _M_op3;
|
||||
public:
|
||||
ll_binary_compose(const _Operation1& __x, const _Operation2& __y,
|
||||
const _Operation3& __z)
|
||||
: _M_op1(__x), _M_op2(__y), _M_op3(__z) { }
|
||||
typename _Operation1::result_type
|
||||
operator()(const typename _Operation2::argument_type& __x) const {
|
||||
return _M_op1(_M_op2(__x), _M_op3(__x));
|
||||
}
|
||||
};
|
||||
|
||||
template <class _Operation1, class _Operation2, class _Operation3>
|
||||
inline ll_binary_compose<_Operation1, _Operation2, _Operation3>
|
||||
llcompose2(const _Operation1& __op1, const _Operation2& __op2,
|
||||
const _Operation3& __op3)
|
||||
{
|
||||
return ll_binary_compose<_Operation1,_Operation2,_Operation3>
|
||||
(__op1, __op2, __op3);
|
||||
}
|
||||
|
||||
// helpers to deal with the fact that MSDev does not package
|
||||
// bind... with the stl. Again, this is from sgi.
|
||||
template <class _Operation>
|
||||
class llbinder1st :
|
||||
public std::unary_function<typename _Operation::second_argument_type,
|
||||
typename _Operation::result_type> {
|
||||
protected:
|
||||
_Operation op;
|
||||
typename _Operation::first_argument_type value;
|
||||
public:
|
||||
llbinder1st(const _Operation& __x,
|
||||
const typename _Operation::first_argument_type& __y)
|
||||
: op(__x), value(__y) {}
|
||||
typename _Operation::result_type
|
||||
operator()(const typename _Operation::second_argument_type& __x) const {
|
||||
return op(value, __x);
|
||||
}
|
||||
};
|
||||
|
||||
template <class _Operation, class _Tp>
|
||||
inline llbinder1st<_Operation>
|
||||
llbind1st(const _Operation& __oper, const _Tp& __x)
|
||||
{
|
||||
typedef typename _Operation::first_argument_type _Arg1_type;
|
||||
return llbinder1st<_Operation>(__oper, _Arg1_type(__x));
|
||||
}
|
||||
|
||||
template <class _Operation>
|
||||
class llbinder2nd
|
||||
: public std::unary_function<typename _Operation::first_argument_type,
|
||||
typename _Operation::result_type> {
|
||||
protected:
|
||||
_Operation op;
|
||||
typename _Operation::second_argument_type value;
|
||||
public:
|
||||
llbinder2nd(const _Operation& __x,
|
||||
const typename _Operation::second_argument_type& __y)
|
||||
: op(__x), value(__y) {}
|
||||
typename _Operation::result_type
|
||||
operator()(const typename _Operation::first_argument_type& __x) const {
|
||||
return op(__x, value);
|
||||
}
|
||||
};
|
||||
|
||||
template <class _Operation, class _Tp>
|
||||
inline llbinder2nd<_Operation>
|
||||
llbind2nd(const _Operation& __oper, const _Tp& __x)
|
||||
{
|
||||
typedef typename _Operation::second_argument_type _Arg2_type;
|
||||
return llbinder2nd<_Operation>(__oper, _Arg2_type(__x));
|
||||
}
|
||||
|
||||
/**
|
||||
* Compare std::type_info* pointers a la std::less. We break this out as a
|
||||
* separate function for use in two different std::less specializations.
|
||||
|
|
@ -317,7 +548,8 @@ bool before(const std::type_info* lhs, const std::type_info* rhs)
|
|||
namespace std
|
||||
{
|
||||
template <>
|
||||
struct less<const std::type_info*>
|
||||
struct less<const std::type_info*>:
|
||||
public std::binary_function<const std::type_info*, const std::type_info*, bool>
|
||||
{
|
||||
bool operator()(const std::type_info* lhs, const std::type_info* rhs) const
|
||||
{
|
||||
|
|
@ -326,7 +558,8 @@ namespace std
|
|||
};
|
||||
|
||||
template <>
|
||||
struct less<std::type_info*>
|
||||
struct less<std::type_info*>:
|
||||
public std::binary_function<std::type_info*, std::type_info*, bool>
|
||||
{
|
||||
bool operator()(std::type_info* lhs, std::type_info* rhs) const
|
||||
{
|
||||
|
|
|
|||
|
|
@ -530,7 +530,7 @@ namespace tut
|
|||
result.ensure();
|
||||
}
|
||||
|
||||
struct TestLargeMessage
|
||||
struct TestLargeMessage: public std::binary_function<size_t, size_t, bool>
|
||||
{
|
||||
TestLargeMessage(const std::string& PYTHON_, const std::string& reader_module_,
|
||||
const std::string& test_name_):
|
||||
|
|
|
|||
|
|
@ -1268,5 +1268,5 @@ U32 LLParcel::countExperienceKeyType( U32 type )
|
|||
return std::count_if(
|
||||
boost::begin(mExperienceKeys | boost::adaptors::map_values),
|
||||
boost::end(mExperienceKeys | boost::adaptors::map_values),
|
||||
[type](U32 key){ return key == type; });
|
||||
std::bind2nd(std::equal_to<U32>(), type));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -436,11 +436,12 @@ LLCircuit::LLCircuit(const F32Seconds circuit_heartbeat_interval, const F32Secon
|
|||
|
||||
LLCircuit::~LLCircuit()
|
||||
{
|
||||
// delete pointers in the map.
|
||||
for (auto circ_pair : mCircuitData)
|
||||
{
|
||||
delete circ_pair.second;
|
||||
}
|
||||
// delete pointers in the map.
|
||||
std::for_each(mCircuitData.begin(),
|
||||
mCircuitData.end(),
|
||||
llcompose1(
|
||||
DeletePointerFunctor<LLCircuitData>(),
|
||||
llselect2nd<circuit_data_map::value_type>()));
|
||||
}
|
||||
|
||||
LLCircuitData *LLCircuit::addCircuitData(const LLHost &host, TPACKETID in_id)
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ void LLDispatcher::copyAllHandlerNames(keys_t& names) const
|
|||
mHandlers.begin(),
|
||||
mHandlers.end(),
|
||||
std::back_insert_iterator<keys_t>(names),
|
||||
[](const dispatch_map_t::value_type& pair){ return pair.first; });
|
||||
llselect1st<dispatch_map_t::value_type>());
|
||||
}
|
||||
|
||||
bool LLDispatcher::dispatch(
|
||||
|
|
|
|||
|
|
@ -32,8 +32,18 @@
|
|||
#include "llframetimer.h"
|
||||
|
||||
// This is used for the stl search_n function.
|
||||
#if _MSC_VER >= 1500 // VC9 has a bug in search_n
|
||||
struct eq_message_throttle_entry : public std::binary_function< LLMessageThrottleEntry, LLMessageThrottleEntry, bool >
|
||||
{
|
||||
bool operator()(const LLMessageThrottleEntry& a, const LLMessageThrottleEntry& b) const
|
||||
{
|
||||
return a.getHash() == b.getHash();
|
||||
}
|
||||
};
|
||||
#else
|
||||
bool eq_message_throttle_entry(LLMessageThrottleEntry a, LLMessageThrottleEntry b)
|
||||
{ return a.getHash() == b.getHash(); }
|
||||
#endif
|
||||
|
||||
const U64 SEC_TO_USEC = 1000000;
|
||||
|
||||
|
|
@ -108,8 +118,14 @@ BOOL LLMessageThrottle::addViewerAlert(const LLUUID& to, const std::string& mesg
|
|||
LLMessageThrottleEntry entry(hash, LLFrameTimer::getTotalTime());
|
||||
|
||||
// Check if this message is already in the list.
|
||||
#if _MSC_VER >= 1500 // VC9 has a bug in search_n
|
||||
// SJB: This *should* work but has not been tested yet *TODO: Test!
|
||||
message_list_iterator_t found = std::find_if(message_list->begin(), message_list->end(),
|
||||
std::bind2nd(eq_message_throttle_entry(), entry));
|
||||
#else
|
||||
message_list_iterator_t found = std::search_n(message_list->begin(), message_list->end(),
|
||||
1, entry, eq_message_throttle_entry);
|
||||
#endif
|
||||
if (found == message_list->end())
|
||||
{
|
||||
// This message was not found. Add it to the list.
|
||||
|
|
@ -136,8 +152,14 @@ BOOL LLMessageThrottle::addAgentAlert(const LLUUID& agent, const LLUUID& task, c
|
|||
LLMessageThrottleEntry entry(hash, LLFrameTimer::getTotalTime());
|
||||
|
||||
// Check if this message is already in the list.
|
||||
#if _MSC_VER >= 1500 // VC9 has a bug in search_n
|
||||
// SJB: This *should* work but has not been tested yet *TODO: Test!
|
||||
message_list_iterator_t found = std::find_if(message_list->begin(), message_list->end(),
|
||||
std::bind2nd(eq_message_throttle_entry(), entry));
|
||||
#else
|
||||
message_list_iterator_t found = std::search_n(message_list->begin(), message_list->end(),
|
||||
1, entry, eq_message_throttle_entry);
|
||||
#endif
|
||||
|
||||
if (found == message_list->end())
|
||||
{
|
||||
|
|
|
|||
|
|
@ -108,7 +108,7 @@ public:
|
|||
*
|
||||
* By default returns false.
|
||||
*/
|
||||
virtual bool overlapsScreenChannel() const { return mOverlapsScreenChannel && getVisible() && isDocked(); }
|
||||
virtual bool overlapsScreenChannel() { return mOverlapsScreenChannel && getVisible() && isDocked(); }
|
||||
virtual void setOverlapsScreenChannel(bool overlaps) { mOverlapsScreenChannel = overlaps; }
|
||||
|
||||
bool getUniqueDocking() { return mUniqueDocking; }
|
||||
|
|
@ -131,7 +131,7 @@ protected:
|
|||
boost::function<BOOL ()> mIsDockedStateForcedCallback;
|
||||
|
||||
private:
|
||||
std::unique_ptr<LLDockControl> mDockControl;
|
||||
std::auto_ptr<LLDockControl> mDockControl;
|
||||
LLUIImagePtr mDockTongue;
|
||||
static LLHandle<LLFloater> sInstanceHandle;
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -276,7 +276,7 @@ private:
|
|||
|
||||
LLUUID mCOFImageID;
|
||||
|
||||
std::unique_ptr<LLOutfitUnLockTimer> mUnlockOutfitTimer;
|
||||
std::auto_ptr<LLOutfitUnLockTimer> mUnlockOutfitTimer;
|
||||
|
||||
// Set of temp attachment UUIDs that should be removed
|
||||
typedef std::set<LLUUID> doomed_temp_attachments_t;
|
||||
|
|
|
|||
|
|
@ -149,6 +149,10 @@ std::string LLExperienceLog::getPermissionString( const LLSD& message, const std
|
|||
{
|
||||
buf.str(entry);
|
||||
}
|
||||
else
|
||||
{
|
||||
buf.str();
|
||||
}
|
||||
}
|
||||
|
||||
if(buf.str().empty())
|
||||
|
|
|
|||
|
|
@ -841,7 +841,7 @@ void LLFavoritesBarCtrl::updateButtons(bool force_update)
|
|||
{
|
||||
//find last visible child to get the rightest button offset
|
||||
child_list_const_reverse_iter_t last_visible_it = std::find_if(childs->rbegin(), childs->rend(),
|
||||
[](child_list_t::value_type child){ return child->getVisible(); });
|
||||
std::mem_fun(&LLView::getVisible));
|
||||
if(last_visible_it != childs->rend())
|
||||
{
|
||||
last_right_edge = (*last_visible_it)->getRect().mRight;
|
||||
|
|
|
|||
|
|
@ -659,7 +659,9 @@ void LLFloaterRegionInfo::refreshFromRegion(LLViewerRegion* region)
|
|||
std::for_each(
|
||||
mInfoPanels.begin(),
|
||||
mInfoPanels.end(),
|
||||
[region](info_panels_t::value_type panel){ panel->refreshFromRegion(region); });
|
||||
llbind2nd(
|
||||
std::mem_fun(&LLPanelRegionInfo::refreshFromRegion),
|
||||
region));
|
||||
mEnvironmentPanel->refreshFromRegion(region);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -752,7 +752,7 @@ S32 LLGestureMgr::getPlayingCount() const
|
|||
}
|
||||
|
||||
|
||||
struct IsGesturePlaying
|
||||
struct IsGesturePlaying : public std::unary_function<LLMultiGesture*, bool>
|
||||
{
|
||||
bool operator()(const LLMultiGesture* gesture) const
|
||||
{
|
||||
|
|
|
|||
|
|
@ -222,7 +222,7 @@ private:
|
|||
LLPanel* mWrapperPanel;
|
||||
|
||||
// timer counts a lifetime of a toast
|
||||
std::unique_ptr<LLToastLifeTimer> mTimer;
|
||||
std::auto_ptr<LLToastLifeTimer> mTimer;
|
||||
|
||||
F32 mToastLifetime; // in seconds
|
||||
F32 mToastFadingTime; // in seconds
|
||||
|
|
|
|||
|
|
@ -224,7 +224,7 @@ void LLWatchdog::run()
|
|||
LL_INFOS() << "Watchdog thread delayed: resetting entries." << LL_ENDL;
|
||||
std::for_each(mSuspects.begin(),
|
||||
mSuspects.end(),
|
||||
[](SuspectsRegistry::value_type suspect){ suspect->reset(); }
|
||||
std::mem_fun(&LLWatchdogEntry::reset)
|
||||
);
|
||||
}
|
||||
else
|
||||
|
|
@ -232,7 +232,7 @@ void LLWatchdog::run()
|
|||
SuspectsRegistry::iterator result =
|
||||
std::find_if(mSuspects.begin(),
|
||||
mSuspects.end(),
|
||||
[](SuspectsRegistry::value_type suspect){ return ! suspect->isAlive(); }
|
||||
std::not1(std::mem_fun(&LLWatchdogEntry::isAlive))
|
||||
);
|
||||
if(result != mSuspects.end())
|
||||
{
|
||||
|
|
|
|||
|
|
@ -135,10 +135,10 @@ namespace tut
|
|||
|
||||
// Instantiate a few GameObjects. Make sure we refer to them
|
||||
// polymorphically, and don't let them leak.
|
||||
std::unique_ptr<GameObject> home;
|
||||
std::unique_ptr<GameObject> obstacle;
|
||||
std::unique_ptr<GameObject> tug;
|
||||
std::unique_ptr<GameObject> patrol;
|
||||
std::auto_ptr<GameObject> home;
|
||||
std::auto_ptr<GameObject> obstacle;
|
||||
std::auto_ptr<GameObject> tug;
|
||||
std::auto_ptr<GameObject> patrol;
|
||||
|
||||
// prototype objects
|
||||
Asteroid dummyAsteroid;
|
||||
|
|
|
|||
Loading…
Reference in New Issue