diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/cmake/00-Common.cmake | 15 | ||||
| -rw-r--r-- | indra/llcommon/llsd.h | 12 | ||||
| -rw-r--r-- | indra/llcommon/llstl.h | 81 | ||||
| -rw-r--r-- | indra/llcommon/tests/llleap_test.cpp | 2 | ||||
| -rw-r--r-- | indra/llinventory/llparcel.cpp | 2 | ||||
| -rw-r--r-- | indra/llmessage/llioutil.h | 2 | ||||
| -rw-r--r-- | indra/llmessage/llmessagethrottle.cpp | 23 | ||||
| -rw-r--r-- | indra/llui/lldockablefloater.h | 3 | ||||
| -rw-r--r-- | indra/newview/llappearancemgr.h | 3 | ||||
| -rw-r--r-- | indra/newview/llfavoritesbar.cpp | 7 | ||||
| -rw-r--r-- | indra/newview/llfloater360capture.cpp | 6 | ||||
| -rw-r--r-- | indra/newview/llfloaterregioninfo.cpp | 12 | ||||
| -rw-r--r-- | indra/newview/llgesturemgr.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/lltoast.h | 3 | ||||
| -rw-r--r-- | indra/newview/llwatchdog.cpp | 13 | ||||
| -rw-r--r-- | indra/test/lldoubledispatch_tut.cpp | 11 | 
16 files changed, 89 insertions, 110 deletions
| diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake index 572422d080..16367f1d91 100644 --- a/indra/cmake/00-Common.cmake +++ b/indra/cmake/00-Common.cmake @@ -46,6 +46,13 @@ endif()  set(CMAKE_CONFIGURATION_TYPES "RelWithDebInfo;Release" CACHE STRING      "Supported build types." FORCE) +# The viewer code base can now be successfully compiled with -std=c++14. But +# turning that on in the generic viewer-build-variables/variables file would +# potentially require tweaking each of our ~50 third-party library builds. +# 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_STANDARD 17)  # Platform-specific compilation flags. @@ -173,13 +180,7 @@ if (DARWIN)    # see Variables.cmake.    string(REPLACE "-gdwarf-2" "-g${CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT}"      CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") -  # The viewer code base can now be successfully compiled with -std=c++14. But -  # turning that on in the generic viewer-build-variables/variables file would -  # potentially require tweaking each of our ~50 third-party library builds. -  # 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++14") +  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${DARWIN_extra_cstar_flags}")    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. diff --git a/indra/llcommon/llsd.h b/indra/llcommon/llsd.h index 24cb9bbce1..3daaef44fc 100644 --- a/indra/llcommon/llsd.h +++ b/indra/llcommon/llsd.h @@ -421,42 +421,42 @@ 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> +struct llsd_select_bool  {  	LLSD::Boolean operator()(const LLSD& sd) const  	{  		return sd.asBoolean();  	}  }; -struct llsd_select_integer : public std::unary_function<LLSD, LLSD::Integer> +struct llsd_select_integer  {  	LLSD::Integer operator()(const LLSD& sd) const  	{  		return sd.asInteger();  	}  }; -struct llsd_select_real : public std::unary_function<LLSD, LLSD::Real> +struct llsd_select_real  {  	LLSD::Real operator()(const LLSD& sd) const  	{  		return sd.asReal();  	}  }; -struct llsd_select_float : public std::unary_function<LLSD, F32> +struct llsd_select_float  {  	F32 operator()(const LLSD& sd) const  	{  		return (F32)sd.asReal();  	}  }; -struct llsd_select_uuid : public std::unary_function<LLSD, LLSD::UUID> +struct llsd_select_uuid  {  	LLSD::UUID operator()(const LLSD& sd) const  	{  		return sd.asUUID();  	}  }; -struct llsd_select_string : public std::unary_function<LLSD, LLSD::String> +struct llsd_select_string  {  	LLSD::String operator()(const LLSD& sd) const  	{ diff --git a/indra/llcommon/llstl.h b/indra/llcommon/llstl.h index a90c2c7e08..25131291f9 100644 --- a/indra/llcommon/llstl.h +++ b/indra/llcommon/llstl.h @@ -142,7 +142,7 @@ struct DeletePairedPointerArray  //                     llselect2nd<map_type::value_type>()));  template<typename T> -struct DeletePointerFunctor : public std::unary_function<T*, bool> +struct DeletePointerFunctor  {  	bool operator()(T* ptr) const  	{ @@ -153,7 +153,7 @@ struct DeletePointerFunctor : public std::unary_function<T*, bool>  // See notes about DeleteArray for why you should consider avoiding this.  template<typename T> -struct DeleteArrayFunctor : public std::unary_function<T*, bool> +struct DeleteArrayFunctor  {  	bool operator()(T* ptr) const  	{ @@ -395,16 +395,17 @@ OutputIter ll_transform_n(  // 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 { +struct _LLSelect1st +{ +  const auto& operator()(const _Pair& __x) const {      return __x.first;    }  };  template <class _Pair> -struct _LLSelect2nd : public std::unary_function<_Pair, typename _Pair::second_type> +struct _LLSelect2nd  { -  const typename _Pair::second_type& operator()(const _Pair& __x) const { +  const auto& operator()(const _Pair& __x) const {      return __x.second;    }  }; @@ -416,9 +417,7 @@ template <class _Pair> struct llselect2nd : public _LLSelect2nd<_Pair> {};  // 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> +class ll_unary_compose  {  protected:    _Operation1 __op1; @@ -426,8 +425,9 @@ protected:  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 { +  template <typename _Op2Arg> +  auto +  operator()(const _Op2Arg& __x) const {      return __op1(__op2(__x));    }  }; @@ -441,8 +441,7 @@ llcompose1(const _Operation1& __op1, const _Operation2& __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; @@ -451,8 +450,9 @@ 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 { +  template<typename OP2ARG> +  auto +  operator()(const OP2ARG& __x) const {      return _M_op1(_M_op2(__x), _M_op3(__x));    }  }; @@ -468,54 +468,51 @@ llcompose2(const _Operation1& __op1, const _Operation2& __op2,  // 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> { +template <class _Operation, typename _Arg1> +class llbinder1st +{  protected:    _Operation op; -  typename _Operation::first_argument_type value; +  _Arg1 value;  public: -  llbinder1st(const _Operation& __x, -			  const typename _Operation::first_argument_type& __y) +  llbinder1st(const _Operation& __x, const _Arg1& __y)        : op(__x), value(__y) {} -	typename _Operation::result_type -	operator()(const typename _Operation::second_argument_type& __x) const { -		return op(value, __x); -	} +    template <typename _Arg2> +    auto +    operator()(const _Arg2& __x) const { +        return op(value, __x); +    }  };  template <class _Operation, class _Tp> -inline llbinder1st<_Operation> +inline auto  llbind1st(const _Operation& __oper, const _Tp& __x)  { -  typedef typename _Operation::first_argument_type _Arg1_type; -  return llbinder1st<_Operation>(__oper, _Arg1_type(__x)); +  return llbinder1st<_Operation, _Tp>(__oper, __x);  } -template <class _Operation> +template <class _Operation, typename _Arg2>  class llbinder2nd -	: public std::unary_function<typename _Operation::first_argument_type, -								 typename _Operation::result_type> { +{  protected:  	_Operation op; -	typename _Operation::second_argument_type value; +	_Arg2 value;  public:  	llbinder2nd(const _Operation& __x, -				const typename _Operation::second_argument_type& __y) +				const _Arg2& __y)  		: op(__x), value(__y) {} -	typename _Operation::result_type -	operator()(const typename _Operation::first_argument_type& __x) const { +	template <typename _Arg1> +	auto +	operator()(const _Arg1& __x) const {  		return op(__x, value);  	}  };  template <class _Operation, class _Tp> -inline llbinder2nd<_Operation> +inline auto  llbind2nd(const _Operation& __oper, const _Tp& __x)  { -  typedef typename _Operation::second_argument_type _Arg2_type; -  return llbinder2nd<_Operation>(__oper, _Arg2_type(__x)); +  return llbinder2nd<_Operation, _Tp>(__oper, __x);  }  /** @@ -548,8 +545,7 @@ bool before(const std::type_info* lhs, const std::type_info* rhs)  namespace std  {  	template <> -	struct less<const std::type_info*>: -		public std::binary_function<const std::type_info*, const std::type_info*, bool> +	struct less<const std::type_info*>  	{  		bool operator()(const std::type_info* lhs, const std::type_info* rhs) const  		{ @@ -558,8 +554,7 @@ namespace std  	};  	template <> -	struct less<std::type_info*>: -		public std::binary_function<std::type_info*, std::type_info*, bool> +	struct less<std::type_info*>  	{  		bool operator()(std::type_info* lhs, std::type_info* rhs) const  		{ diff --git a/indra/llcommon/tests/llleap_test.cpp b/indra/llcommon/tests/llleap_test.cpp index daa84df792..7ee36a9ea6 100644 --- a/indra/llcommon/tests/llleap_test.cpp +++ b/indra/llcommon/tests/llleap_test.cpp @@ -525,7 +525,7 @@ namespace tut          result.ensure();      } -    struct TestLargeMessage: public std::binary_function<size_t, size_t, bool> +    struct TestLargeMessage      {          TestLargeMessage(const std::string& PYTHON_, const std::string& reader_module_,                           const std::string& test_name_): diff --git a/indra/llinventory/llparcel.cpp b/indra/llinventory/llparcel.cpp index e25dae8a90..8db926fddf 100644 --- a/indra/llinventory/llparcel.cpp +++ b/indra/llinventory/llparcel.cpp @@ -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),  -		std::bind2nd(std::equal_to<U32>(), type)); +		[type](U32 key){ return (key == type); });  } diff --git a/indra/llmessage/llioutil.h b/indra/llmessage/llioutil.h index e8d245f530..c404a98bed 100644 --- a/indra/llmessage/llioutil.h +++ b/indra/llmessage/llioutil.h @@ -147,7 +147,7 @@ protected:   * }   * </code>   */ -class LLChangeChannel //: public unary_function<T, void> +class LLChangeChannel  {  public:  	/**  diff --git a/indra/llmessage/llmessagethrottle.cpp b/indra/llmessage/llmessagethrottle.cpp index 579d6d7187..14582aaf32 100644 --- a/indra/llmessage/llmessagethrottle.cpp +++ b/indra/llmessage/llmessagethrottle.cpp @@ -32,18 +32,8 @@  #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; @@ -118,14 +108,8 @@ 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. @@ -152,15 +136,8 @@ 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())  	{  		// This message was not found.  Add it to the list. diff --git a/indra/llui/lldockablefloater.h b/indra/llui/lldockablefloater.h index 89c9852f4a..5d90b3ef4e 100644 --- a/indra/llui/lldockablefloater.h +++ b/indra/llui/lldockablefloater.h @@ -30,6 +30,7 @@  #include "llerror.h"  #include "llfloater.h"  #include "lldockcontrol.h" +#include <memory>  /**   * Represents floater that can dock. @@ -131,7 +132,7 @@ protected:  	boost::function<BOOL ()> mIsDockedStateForcedCallback;  private: -	std::auto_ptr<LLDockControl> mDockControl; +	std::unique_ptr<LLDockControl> mDockControl;  	LLUIImagePtr mDockTongue;  	static LLHandle<LLFloater> sInstanceHandle;  	/** diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h index 8a55a848db..cf953d21ac 100644 --- a/indra/newview/llappearancemgr.h +++ b/indra/newview/llappearancemgr.h @@ -35,6 +35,7 @@  #include "llinventoryobserver.h"  #include "llviewerinventory.h"  #include "llcorehttputil.h" +#include <memory>  class LLWearableHoldingPattern;  class LLInventoryCallback; @@ -276,7 +277,7 @@ private:  	LLUUID mCOFImageID; -	std::auto_ptr<LLOutfitUnLockTimer> mUnlockOutfitTimer; +	std::unique_ptr<LLOutfitUnLockTimer> mUnlockOutfitTimer;  	// Set of temp attachment UUIDs that should be removed  	typedef std::set<LLUUID> doomed_temp_attachments_t; diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp index a02bb56489..4f2769a507 100644 --- a/indra/newview/llfavoritesbar.cpp +++ b/indra/newview/llfavoritesbar.cpp @@ -848,8 +848,11 @@ void LLFavoritesBarCtrl::updateButtons(bool force_update)  		if (getChildList()->size() > 0)  		{  			//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(),  -					std::mem_fun(&LLView::getVisible)); +			child_list_const_reverse_iter_t last_visible_it = +				std::find_if( +					childs->rbegin(), childs->rend(),  +					[](const child_list_t::value_type& child) +					{ return child->getVisible(); });  			if(last_visible_it != childs->rend())  			{  				last_right_edge = (*last_visible_it)->getRect().mRight; diff --git a/indra/newview/llfloater360capture.cpp b/indra/newview/llfloater360capture.cpp index ffbb0bbee9..279a8f68ea 100644 --- a/indra/newview/llfloater360capture.cpp +++ b/indra/newview/llfloater360capture.cpp @@ -889,8 +889,10 @@ const std::string LLFloater360Capture::generate_proposed_filename()          // this looks complex but it's straightforward - removes all non-alpha chars from a string          // which in this case is the SL region name - we use it as a proposed filename but the user is free to change          std::string region_name = region->getName(); -        std::replace_if(region_name.begin(), region_name.end(), std::not1(std::ptr_fun(isalnum)), '_'); -        if (region_name.length() > 0) +        std::replace_if(region_name.begin(), region_name.end(), +                        [](char c){ return ! std::isalnum(c); }, +                        '_'); +        if (! region_name.empty())          {              filename << region_name;              filename << "_"; diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp index 296e155d28..bf38a495bb 100644 --- a/indra/newview/llfloaterregioninfo.cpp +++ b/indra/newview/llfloaterregioninfo.cpp @@ -656,13 +656,11 @@ void LLFloaterRegionInfo::refreshFromRegion(LLViewerRegion* region)  	}  	// call refresh from region on all panels -	std::for_each( -		mInfoPanels.begin(), -		mInfoPanels.end(), -		llbind2nd( -			std::mem_fun(&LLPanelRegionInfo::refreshFromRegion), -			region)); -    mEnvironmentPanel->refreshFromRegion(region); +	for (const auto& infoPanel : mInfoPanels) +	{ +		infoPanel->refreshFromRegion(region); +	} +	mEnvironmentPanel->refreshFromRegion(region);  }  // public diff --git a/indra/newview/llgesturemgr.cpp b/indra/newview/llgesturemgr.cpp index 489d34edca..c0f773968d 100644 --- a/indra/newview/llgesturemgr.cpp +++ b/indra/newview/llgesturemgr.cpp @@ -757,11 +757,11 @@ S32 LLGestureMgr::getPlayingCount() const  } -struct IsGesturePlaying : public std::unary_function<LLMultiGesture*, bool> +struct IsGesturePlaying  {  	bool operator()(const LLMultiGesture* gesture) const  	{ -		return gesture->mPlaying ? true : false; +		return bool(gesture->mPlaying);  	}  }; diff --git a/indra/newview/lltoast.h b/indra/newview/lltoast.h index 69074b1670..ab559f1e6f 100644 --- a/indra/newview/lltoast.h +++ b/indra/newview/lltoast.h @@ -35,6 +35,7 @@  #include "llviewercontrol.h"  #include "lltexteditor.h" +#include <memory>  #define MOUSE_LEAVE false  #define MOUSE_ENTER true @@ -222,7 +223,7 @@ private:  	LLPanel*	 mWrapperPanel;  	// timer counts a lifetime of a toast -	std::auto_ptr<LLToastLifeTimer> mTimer; +	std::unique_ptr<LLToastLifeTimer> mTimer;  	F32			mToastLifetime; // in seconds  	F32			mToastFadingTime; // in seconds diff --git a/indra/newview/llwatchdog.cpp b/indra/newview/llwatchdog.cpp index 0aa0280b25..ceff5cc8ee 100644 --- a/indra/newview/llwatchdog.cpp +++ b/indra/newview/llwatchdog.cpp @@ -222,18 +222,17 @@ void LLWatchdog::run()  	if(current_run_delta > (WATCHDOG_SLEEP_TIME_USEC * TIME_ELAPSED_MULTIPLIER))  	{  		LL_INFOS() << "Watchdog thread delayed: resetting entries." << LL_ENDL; -		std::for_each(mSuspects.begin(),  -			mSuspects.end(),  -			std::mem_fun(&LLWatchdogEntry::reset) -			); +		for (const auto& suspect : mSuspects) +		{ +			suspect->reset(); +		}  	}  	else  	{  		SuspectsRegistry::iterator result =   			std::find_if(mSuspects.begin(),  -				mSuspects.end(),  -				std::not1(std::mem_fun(&LLWatchdogEntry::isAlive)) -				); +				mSuspects.end(), +				[](const LLWatchdogEntry* suspect){ return ! suspect->isAlive(); });  		if(result != mSuspects.end())  		{  			// error!!! diff --git a/indra/test/lldoubledispatch_tut.cpp b/indra/test/lldoubledispatch_tut.cpp index ad8f6454d4..dbf55e666f 100644 --- a/indra/test/lldoubledispatch_tut.cpp +++ b/indra/test/lldoubledispatch_tut.cpp @@ -35,8 +35,9 @@  #include "lldoubledispatch.h"  // STL headers  // std headers -#include <string>  #include <iostream> +#include <memory> +#include <string>  #include <typeinfo>  // external library headers  // other Linden headers @@ -135,10 +136,10 @@ namespace tut          // Instantiate a few GameObjects.  Make sure we refer to them          // polymorphically, and don't let them leak. -        std::auto_ptr<GameObject> home; -        std::auto_ptr<GameObject> obstacle; -        std::auto_ptr<GameObject> tug; -        std::auto_ptr<GameObject> patrol; +        std::unique_ptr<GameObject> home; +        std::unique_ptr<GameObject> obstacle; +        std::unique_ptr<GameObject> tug; +        std::unique_ptr<GameObject> patrol;          // prototype objects          Asteroid dummyAsteroid; | 
