diff options
Diffstat (limited to 'indra/llcommon')
| -rw-r--r-- | indra/llcommon/CMakeLists.txt | 60 | ||||
| -rw-r--r-- | indra/llcommon/imageids.cpp | 76 | ||||
| -rw-r--r-- | indra/llcommon/imageids.h | 57 | ||||
| -rw-r--r-- | indra/llcommon/indra_constants.cpp | 46 | ||||
| -rw-r--r-- | indra/llcommon/indra_constants.h | 22 | ||||
| -rw-r--r-- | indra/llcommon/linden_common.h | 2 | ||||
| -rw-r--r-- | indra/llcommon/lldictionary.cpp | 52 | ||||
| -rw-r--r-- | indra/llcommon/lldictionary.h | 18 | ||||
| -rw-r--r-- | indra/llcommon/llpreprocessor.h | 4 | ||||
| -rw-r--r-- | indra/llcommon/llsd.cpp | 32 | ||||
| -rw-r--r-- | indra/llcommon/llsd.h | 6 | ||||
| -rw-r--r-- | indra/llcommon/llsingleton.h | 1 | ||||
| -rw-r--r-- | indra/llcommon/llstring.cpp | 9 | ||||
| -rw-r--r-- | indra/llcommon/llsys.cpp | 132 | 
14 files changed, 343 insertions, 174 deletions
| diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt index 581ee3f7e3..ac7cc2cdac 100644 --- a/indra/llcommon/CMakeLists.txt +++ b/indra/llcommon/CMakeLists.txt @@ -25,6 +25,8 @@ include_directories(  #     ${LLCOMMON_LIBRARIES})  set(llcommon_SOURCE_FILES +    imageids.cpp +    indra_constants.cpp      llallocator.cpp      llallocator_heap_profile.cpp      llapp.cpp @@ -39,6 +41,7 @@ set(llcommon_SOURCE_FILES      llcursortypes.cpp      lldate.cpp      lldependencies.cpp +    lldictionary.cpp      llerror.cpp      llerrorthread.cpp      llevent.cpp @@ -267,33 +270,34 @@ target_link_libraries(  add_dependencies(llcommon stage_third_party_libs) -include(LLAddBuildTest) -SET(llcommon_TEST_SOURCE_FILES -  # unit-testing llcommon is not possible right now as the test-harness *itself* depends upon llcommon, causing a circular dependency.  Add your 'unit' tests as integration tests for now. -  ) -LL_ADD_PROJECT_UNIT_TESTS(llcommon "${llcommon_TEST_SOURCE_FILES}") - -#set(TEST_DEBUG on) -set(test_libs llcommon ${LLCOMMON_LIBRARIES} ${WINDOWS_LIBRARIES} ${GOOGLEMOCK_LIBRARIES}) -LL_ADD_INTEGRATION_TEST(commonmisc "" "${test_libs}") -LL_ADD_INTEGRATION_TEST(bitpack "" "${test_libs}") -LL_ADD_INTEGRATION_TEST(llbase64 "" "${test_libs}") -LL_ADD_INTEGRATION_TEST(lldate "" "${test_libs}") -LL_ADD_INTEGRATION_TEST(lldependencies "" "${test_libs}") -LL_ADD_INTEGRATION_TEST(llerror "" "${test_libs}") -LL_ADD_INTEGRATION_TEST(llframetimer "" "${test_libs}") -LL_ADD_INTEGRATION_TEST(llinstancetracker "" "${test_libs}") -LL_ADD_INTEGRATION_TEST(lllazy "" "${test_libs}") -LL_ADD_INTEGRATION_TEST(llrand "" "${test_libs}") -LL_ADD_INTEGRATION_TEST(llsdserialize "" "${test_libs}") -LL_ADD_INTEGRATION_TEST(llstring "" "${test_libs}") -LL_ADD_INTEGRATION_TEST(lltreeiterators "" "${test_libs}") -LL_ADD_INTEGRATION_TEST(lluri "" "${test_libs}") -LL_ADD_INTEGRATION_TEST(reflection "" "${test_libs}") -LL_ADD_INTEGRATION_TEST(stringize "" "${test_libs}") +if (LL_TESTS) +  include(LLAddBuildTest) +  SET(llcommon_TEST_SOURCE_FILES +    # unit-testing llcommon is not possible right now as the test-harness *itself* depends upon llcommon, causing a circular dependency.  Add your 'unit' tests as integration tests for now. +    ) +  LL_ADD_PROJECT_UNIT_TESTS(llcommon "${llcommon_TEST_SOURCE_FILES}") -# *TODO - reenable these once tcmalloc libs no longer break the build. -#ADD_BUILD_TEST(llallocator llcommon) -#ADD_BUILD_TEST(llallocator_heap_profile llcommon) -#ADD_BUILD_TEST(llmemtype llcommon) +  #set(TEST_DEBUG on) +  set(test_libs llcommon ${LLCOMMON_LIBRARIES} ${WINDOWS_LIBRARIES} ${GOOGLEMOCK_LIBRARIES}) +  LL_ADD_INTEGRATION_TEST(commonmisc "" "${test_libs}") +  LL_ADD_INTEGRATION_TEST(bitpack "" "${test_libs}") +  LL_ADD_INTEGRATION_TEST(llbase64 "" "${test_libs}") +  LL_ADD_INTEGRATION_TEST(lldate "" "${test_libs}") +  LL_ADD_INTEGRATION_TEST(lldependencies "" "${test_libs}") +  LL_ADD_INTEGRATION_TEST(llerror "" "${test_libs}") +  LL_ADD_INTEGRATION_TEST(llframetimer "" "${test_libs}") +  LL_ADD_INTEGRATION_TEST(llinstancetracker "" "${test_libs}") +  LL_ADD_INTEGRATION_TEST(lllazy "" "${test_libs}") +  LL_ADD_INTEGRATION_TEST(llrand "" "${test_libs}") +  LL_ADD_INTEGRATION_TEST(llsdserialize "" "${test_libs}") +  LL_ADD_INTEGRATION_TEST(llstring "" "${test_libs}") +  LL_ADD_INTEGRATION_TEST(lltreeiterators "" "${test_libs}") +  LL_ADD_INTEGRATION_TEST(lluri "" "${test_libs}") +  LL_ADD_INTEGRATION_TEST(reflection "" "${test_libs}") +  LL_ADD_INTEGRATION_TEST(stringize "" "${test_libs}") +  # *TODO - reenable these once tcmalloc libs no longer break the build. +  #ADD_BUILD_TEST(llallocator llcommon) +  #ADD_BUILD_TEST(llallocator_heap_profile llcommon) +  #ADD_BUILD_TEST(llmemtype llcommon) +endif (LL_TESTS) diff --git a/indra/llcommon/imageids.cpp b/indra/llcommon/imageids.cpp new file mode 100644 index 0000000000..f48bb1374d --- /dev/null +++ b/indra/llcommon/imageids.cpp @@ -0,0 +1,76 @@ +/**  + * @file imageids.cpp + * + * $LicenseInfo:firstyear=2001&license=viewergpl$ + *  + * Copyright (c) 2001-2009, Linden Research, Inc. + *  + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab.  Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + *  + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + *  + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + *  + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#include "linden_common.h" + +#include "imageids.h" + +#include "lluuid.h" + +// +// USE OF THIS FILE IS DEPRECATED +// +// Please use viewerart.ini and the standard +// art import path.																			// indicates if file is only +			 															// on dataserver, or also +																			// pre-cached on viewer + +// Grass Images +const LLUUID IMG_SMOKE			("b4ba225c-373f-446d-9f7e-6cb7b5cf9b3d");  // VIEWER + +const LLUUID IMG_DEFAULT		("d2114404-dd59-4a4d-8e6c-49359e91bbf0");  // VIEWER + +const LLUUID IMG_SUN			("cce0f112-878f-4586-a2e2-a8f104bba271"); // dataserver +const LLUUID IMG_MOON			("d07f6eed-b96a-47cd-b51d-400ad4a1c428"); // dataserver +const LLUUID IMG_CLOUD_POOF		("fc4b9f0b-d008-45c6-96a4-01dd947ac621"); // dataserver +const LLUUID IMG_SHOT			("35f217a3-f618-49cf-bbca-c86d486551a9"); // dataserver +const LLUUID IMG_SPARK			("d2e75ac1-d0fb-4532-820e-a20034ac814d"); // dataserver +const LLUUID IMG_FIRE			("aca40aa8-44cf-44ca-a0fa-93e1a2986f82"); // dataserver +const LLUUID IMG_FACE_SELECT    ("a85ac674-cb75-4af6-9499-df7c5aaf7a28"); // face selector +const LLUUID IMG_DEFAULT_AVATAR ("c228d1cf-4b5d-4ba8-84f4-899a0796aa97"); // dataserver +const LLUUID IMG_INVISIBLE		("3a367d1c-bef1-6d43-7595-e88c1e3aadb3"); // dataserver + +const LLUUID IMG_EXPLOSION				("68edcf47-ccd7-45b8-9f90-1649d7f12806"); // On dataserver +const LLUUID IMG_EXPLOSION_2			("21ce046c-83fe-430a-b629-c7660ac78d7c"); // On dataserver +const LLUUID IMG_EXPLOSION_3			("fedea30a-1be8-47a6-bc06-337a04a39c4b"); // On dataserver +const LLUUID IMG_EXPLOSION_4			("abf0d56b-82e5-47a2-a8ad-74741bb2c29e"); // On dataserver +const LLUUID IMG_SMOKE_POOF				("1e63e323-5fe0-452e-92f8-b98bd0f764e3"); // On dataserver + +const LLUUID IMG_BIG_EXPLOSION_1		("5e47a0dc-97bf-44e0-8b40-de06718cee9d"); // On dataserver +const LLUUID IMG_BIG_EXPLOSION_2		("9c8eca51-53d5-42a7-bb58-cef070395db8"); // On dataserver + +const LLUUID IMG_BLOOM1	  			    ("3c59f7fe-9dc8-47f9-8aaf-a9dd1fbc3bef"); // VIEWER +const LLUUID TERRAIN_DIRT_DETAIL		("0bc58228-74a0-7e83-89bc-5c23464bcec5"); // VIEWER +const LLUUID TERRAIN_GRASS_DETAIL		("63338ede-0037-c4fd-855b-015d77112fc8"); // VIEWER +const LLUUID TERRAIN_MOUNTAIN_DETAIL	("303cd381-8560-7579-23f1-f0a880799740"); // VIEWER +const LLUUID TERRAIN_ROCK_DETAIL		("53a2f406-4895-1d13-d541-d2e3b86bc19c"); // VIEWER + +const LLUUID DEFAULT_WATER_NORMAL		("822ded49-9a6c-f61c-cb89-6df54f42cdf4"); // VIEWER diff --git a/indra/llcommon/imageids.h b/indra/llcommon/imageids.h index 832708c782..dc726dcf53 100644 --- a/indra/llcommon/imageids.h +++ b/indra/llcommon/imageids.h @@ -33,46 +33,43 @@  #ifndef LL_IMAGEIDS_H  #define LL_IMAGEIDS_H -#include "lluuid.h" -  //  // USE OF THIS FILE IS DEPRECATED  //  // Please use viewerart.ini and the standard -// art import path.																			// indicates if file is only -			 															// on dataserver, or also -																			// pre-cached on viewer +// art import path. + +class LLUUID; -// Grass Images -const LLUUID IMG_SMOKE			("b4ba225c-373f-446d-9f7e-6cb7b5cf9b3d");  // VIEWER +LL_COMMON_API extern const LLUUID IMG_SMOKE; -const LLUUID IMG_DEFAULT		("d2114404-dd59-4a4d-8e6c-49359e91bbf0");  // VIEWER +LL_COMMON_API extern const LLUUID IMG_DEFAULT; -const LLUUID IMG_SUN			("cce0f112-878f-4586-a2e2-a8f104bba271"); // dataserver -const LLUUID IMG_MOON			("d07f6eed-b96a-47cd-b51d-400ad4a1c428"); // dataserver -const LLUUID IMG_CLOUD_POOF		("fc4b9f0b-d008-45c6-96a4-01dd947ac621"); // dataserver -const LLUUID IMG_SHOT			("35f217a3-f618-49cf-bbca-c86d486551a9"); // dataserver -const LLUUID IMG_SPARK			("d2e75ac1-d0fb-4532-820e-a20034ac814d"); // dataserver -const LLUUID IMG_FIRE			("aca40aa8-44cf-44ca-a0fa-93e1a2986f82"); // dataserver -const LLUUID IMG_FACE_SELECT    ("a85ac674-cb75-4af6-9499-df7c5aaf7a28"); // face selector -const LLUUID IMG_DEFAULT_AVATAR ("c228d1cf-4b5d-4ba8-84f4-899a0796aa97"); // dataserver -const LLUUID IMG_INVISIBLE		("3a367d1c-bef1-6d43-7595-e88c1e3aadb3"); // dataserver +LL_COMMON_API extern const LLUUID IMG_SUN; +LL_COMMON_API extern const LLUUID IMG_MOON; +LL_COMMON_API extern const LLUUID IMG_CLOUD_POOF; +LL_COMMON_API extern const LLUUID IMG_SHOT; +LL_COMMON_API extern const LLUUID IMG_SPARK; +LL_COMMON_API extern const LLUUID IMG_FIRE; +LL_COMMON_API extern const LLUUID IMG_FACE_SELECT; +LL_COMMON_API extern const LLUUID IMG_DEFAULT_AVATAR; +LL_COMMON_API extern const LLUUID IMG_INVISIBLE; -const LLUUID IMG_EXPLOSION				("68edcf47-ccd7-45b8-9f90-1649d7f12806"); // On dataserver -const LLUUID IMG_EXPLOSION_2			("21ce046c-83fe-430a-b629-c7660ac78d7c"); // On dataserver -const LLUUID IMG_EXPLOSION_3			("fedea30a-1be8-47a6-bc06-337a04a39c4b"); // On dataserver -const LLUUID IMG_EXPLOSION_4			("abf0d56b-82e5-47a2-a8ad-74741bb2c29e"); // On dataserver -const LLUUID IMG_SMOKE_POOF				("1e63e323-5fe0-452e-92f8-b98bd0f764e3"); // On dataserver +LL_COMMON_API extern const LLUUID IMG_EXPLOSION; +LL_COMMON_API extern const LLUUID IMG_EXPLOSION_2; +LL_COMMON_API extern const LLUUID IMG_EXPLOSION_3; +LL_COMMON_API extern const LLUUID IMG_EXPLOSION_4; +LL_COMMON_API extern const LLUUID IMG_SMOKE_POOF; -const LLUUID IMG_BIG_EXPLOSION_1		("5e47a0dc-97bf-44e0-8b40-de06718cee9d"); // On dataserver -const LLUUID IMG_BIG_EXPLOSION_2		("9c8eca51-53d5-42a7-bb58-cef070395db8"); // On dataserver +LL_COMMON_API extern const LLUUID IMG_BIG_EXPLOSION_1; +LL_COMMON_API extern const LLUUID IMG_BIG_EXPLOSION_2; -const LLUUID IMG_BLOOM1	  			    ("3c59f7fe-9dc8-47f9-8aaf-a9dd1fbc3bef"); // VIEWER -const LLUUID TERRAIN_DIRT_DETAIL		("0bc58228-74a0-7e83-89bc-5c23464bcec5"); // VIEWER -const LLUUID TERRAIN_GRASS_DETAIL		("63338ede-0037-c4fd-855b-015d77112fc8"); // VIEWER -const LLUUID TERRAIN_MOUNTAIN_DETAIL	("303cd381-8560-7579-23f1-f0a880799740"); // VIEWER -const LLUUID TERRAIN_ROCK_DETAIL		("53a2f406-4895-1d13-d541-d2e3b86bc19c"); // VIEWER +LL_COMMON_API extern const LLUUID IMG_BLOOM1; +LL_COMMON_API extern const LLUUID TERRAIN_DIRT_DETAIL; +LL_COMMON_API extern const LLUUID TERRAIN_GRASS_DETAIL; +LL_COMMON_API extern const LLUUID TERRAIN_MOUNTAIN_DETAIL; +LL_COMMON_API extern const LLUUID TERRAIN_ROCK_DETAIL; -const LLUUID DEFAULT_WATER_NORMAL		("822ded49-9a6c-f61c-cb89-6df54f42cdf4"); // VIEWER +LL_COMMON_API extern const LLUUID DEFAULT_WATER_NORMAL;  #endif diff --git a/indra/llcommon/indra_constants.cpp b/indra/llcommon/indra_constants.cpp new file mode 100644 index 0000000000..8a1290d4dc --- /dev/null +++ b/indra/llcommon/indra_constants.cpp @@ -0,0 +1,46 @@ +/**  + * @file indra_constants.cpp + * @brief some useful short term constants for Indra + * + * $LicenseInfo:firstyear=2001&license=viewergpl$ + *  + * Copyright (c) 2001-2009, Linden Research, Inc. + *  + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab.  Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + *  + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + *  + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + *  + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ +#include "linden_common.h" + +#include "indra_constants.h" + +#include "lluuid.h" + +// "agent id" for things that should be done to ALL agents +const LLUUID LL_UUID_ALL_AGENTS("44e87126-e794-4ded-05b3-7c42da3d5cdb"); + +// Governor Linden's agent id. +const LLUUID ALEXANDRIA_LINDEN_ID("ba2a564a-f0f1-4b82-9c61-b7520bfcd09f"); +const LLUUID GOVERNOR_LINDEN_ID("3d6181b0-6a4b-97ef-18d8-722652995cf1"); +const LLUUID REALESTATE_LINDEN_ID("3d6181b0-6a4b-97ef-18d8-722652995cf1"); +// Maintenance's group id. +const LLUUID MAINTENANCE_GROUP_ID("dc7b21cd-3c89-fcaa-31c8-25f9ffd224cd"); diff --git a/indra/llcommon/indra_constants.h b/indra/llcommon/indra_constants.h index 6b75a720af..d4a07d77cc 100644 --- a/indra/llcommon/indra_constants.h +++ b/indra/llcommon/indra_constants.h @@ -34,7 +34,8 @@  #define LL_INDRA_CONSTANTS_H  #include "stdtypes.h" -#include "lluuid.h" + +class LLUUID;  // At 45 Hz collisions seem stable and objects seem  // to settle down at a reasonable rate. @@ -46,7 +47,7 @@  #define PHYSICS_TIMESTEP (1.f / 45.f)  const F32 COLLISION_TOLERANCE = 0.1f; -const F32 HALF_COLLISION_TOLERANCE = COLLISION_TOLERANCE * 0.5f; +const F32 HALF_COLLISION_TOLERANCE = 0.05f;  // Time constants  const U32 HOURS_PER_LINDEN_DAY		= 4;	 @@ -97,9 +98,9 @@ const 	F32 	MIN_AGENT_WIDTH 		= 0.40f;  const 	F32 	DEFAULT_AGENT_WIDTH 	= 0.60f;  const 	F32 	MAX_AGENT_WIDTH 		= 0.80f; -const 	F32 	MIN_AGENT_HEIGHT		= 1.3f - 2.0f * COLLISION_TOLERANCE; +const 	F32 	MIN_AGENT_HEIGHT		= 1.1f;  const 	F32 	DEFAULT_AGENT_HEIGHT	= 1.9f; -const 	F32 	MAX_AGENT_HEIGHT		= 2.65f - 2.0f * COLLISION_TOLERANCE; +const 	F32 	MAX_AGENT_HEIGHT		= 2.45f;  // For linked sets  const S32 MAX_CHILDREN_PER_TASK = 255; @@ -266,14 +267,15 @@ const U8 GOD_LIKE = 1;  const U8 GOD_NOT = 0;  // "agent id" for things that should be done to ALL agents -const LLUUID LL_UUID_ALL_AGENTS("44e87126-e794-4ded-05b3-7c42da3d5cdb"); +LL_COMMON_API extern const LLUUID LL_UUID_ALL_AGENTS; + +// inventory library owner +LL_COMMON_API extern const LLUUID ALEXANDRIA_LINDEN_ID; -// Governor Linden's agent id. -const LLUUID ALEXANDRIA_LINDEN_ID("ba2a564a-f0f1-4b82-9c61-b7520bfcd09f"); -const LLUUID GOVERNOR_LINDEN_ID("3d6181b0-6a4b-97ef-18d8-722652995cf1"); -const LLUUID REALESTATE_LINDEN_ID("3d6181b0-6a4b-97ef-18d8-722652995cf1"); +LL_COMMON_API extern const LLUUID GOVERNOR_LINDEN_ID; +LL_COMMON_API extern const LLUUID REALESTATE_LINDEN_ID;  // Maintenance's group id. -const LLUUID MAINTENANCE_GROUP_ID("dc7b21cd-3c89-fcaa-31c8-25f9ffd224cd"); +LL_COMMON_API extern const LLUUID MAINTENANCE_GROUP_ID;  // Flags for kick message  const U32 KICK_FLAGS_DEFAULT	= 0x0; diff --git a/indra/llcommon/linden_common.h b/indra/llcommon/linden_common.h index c2eb867795..771af01279 100644 --- a/indra/llcommon/linden_common.h +++ b/indra/llcommon/linden_common.h @@ -64,6 +64,8 @@  #pragma warning (disable : 4244) // conversion from time_t to S32  #endif	//	LL_WINDOWS +// *TODO: Eliminate these, most library .cpp files don't need them. +// Add them to llviewerprecompiledheaders.h if necessary.  #include <list>  #include <map>  #include <vector> diff --git a/indra/llcommon/lldictionary.cpp b/indra/llcommon/lldictionary.cpp new file mode 100644 index 0000000000..8730238d92 --- /dev/null +++ b/indra/llcommon/lldictionary.cpp @@ -0,0 +1,52 @@ +/**  + * @file lldictionary.cpp + * @brief Lldictionary class header file + * + * $LicenseInfo:firstyear=2002&license=viewergpl$ + *  + * Copyright (c) 2002-2007, Linden Research, Inc. + *  + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab.  Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlife.com/developers/opensource/gplv2 + *  + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at http://secondlife.com/developers/opensource/flossexception + *  + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + *  + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#include "linden_common.h" + +#include "lldictionary.h" + +#include "llstring.h" + +// Define in .cpp file to prevent header include of llstring.h +LLDictionaryEntry::LLDictionaryEntry(const std::string &name) +:	mName(name) +{ +	mNameCapitalized = mName; +	LLStringUtil::replaceChar(mNameCapitalized, '-', ' '); +	LLStringUtil::replaceChar(mNameCapitalized, '_', ' '); +	for (U32 i=0; i < mNameCapitalized.size(); i++) +	{ +		if (i == 0 || mNameCapitalized[i-1] == ' ') // don't change ordering of this statement or crash +		{ +			mNameCapitalized[i] = toupper(mNameCapitalized[i]); +		} +	} +} diff --git a/indra/llcommon/lldictionary.h b/indra/llcommon/lldictionary.h index 436b689ca6..95178b41e7 100644 --- a/indra/llcommon/lldictionary.h +++ b/indra/llcommon/lldictionary.h @@ -33,23 +33,11 @@  #define LL_LLDICTIONARY_H  #include <map> +#include <string> -struct LLDictionaryEntry +struct LL_COMMON_API LLDictionaryEntry  { -	LLDictionaryEntry(const std::string &name) : -		mName(name) -	{ -		mNameCapitalized = mName; -		LLStringUtil::replaceChar(mNameCapitalized, '-', ' '); -		LLStringUtil::replaceChar(mNameCapitalized, '_', ' '); -		for (U32 i=0; i < mNameCapitalized.size(); i++) -		{ -			if (i == 0 || mNameCapitalized[i-1] == ' ') // don't change ordering of this statement or crash -			{ -				mNameCapitalized[i] = toupper(mNameCapitalized[i]); -			} -		} -	} +	LLDictionaryEntry(const std::string &name);  	virtual ~LLDictionaryEntry() {}  	const std::string mName;  	std::string mNameCapitalized; diff --git a/indra/llcommon/llpreprocessor.h b/indra/llcommon/llpreprocessor.h index bb3301df9f..5eefa6a16b 100644 --- a/indra/llcommon/llpreprocessor.h +++ b/indra/llcommon/llpreprocessor.h @@ -128,6 +128,10 @@  #pragma warning( disable : 4800 )	// 'BOOL' : forcing value to bool 'true' or 'false' (performance warning)  #pragma warning( disable : 4996 )	// warning: deprecated +// Linker optimization with "extern template" generates these warnings +#pragma warning( disable : 4231 )	// nonstandard extension used : 'extern' before template explicit instantiation +#pragma warning( disable : 4506 )   // no definition for inline function +  // level 4 warnings that we need to disable:  #pragma warning (disable : 4100) // unreferenced formal parameter  #pragma warning (disable : 4127) // conditional expression is constant (e.g. while(1) ) diff --git a/indra/llcommon/llsd.cpp b/indra/llcommon/llsd.cpp index 9140ebb3f3..c863d4e266 100644 --- a/indra/llcommon/llsd.cpp +++ b/indra/llcommon/llsd.cpp @@ -355,7 +355,7 @@ namespace  		using LLSD::Impl::erase; // Unhiding erase(LLSD::Integer)  		using LLSD::Impl::ref; // Unhiding ref(LLSD::Integer)  		virtual LLSD get(const LLSD::String&) const;  -		        LLSD& insert(const LLSD::String& k, const LLSD& v); +		void insert(const LLSD::String& k, const LLSD& v);  		virtual void erase(const LLSD::String&);  		              LLSD& ref(const LLSD::String&);  		virtual const LLSD& ref(const LLSD::String&) const; @@ -394,14 +394,9 @@ namespace  		return (i != mData.end()) ? i->second : LLSD();  	} -	LLSD& ImplMap::insert(const LLSD::String& k, const LLSD& v) +	void ImplMap::insert(const LLSD::String& k, const LLSD& v)  	{  		mData.insert(DataMap::value_type(k, v)); -		#ifdef LL_MSVC7 -			return *((LLSD*)this); -		#else -			return *dynamic_cast<LLSD*>(this); -		#endif  	}  	void ImplMap::erase(const LLSD::String& k) @@ -450,7 +445,7 @@ namespace  		virtual int size() const;   		virtual LLSD get(LLSD::Integer) const;  		        void set(LLSD::Integer, const LLSD&); -		        LLSD& insert(LLSD::Integer, const LLSD&); +		        void insert(LLSD::Integer, const LLSD&);  		        void append(const LLSD&);  		virtual void erase(LLSD::Integer);  		              LLSD& ref(LLSD::Integer); @@ -499,14 +494,10 @@ namespace  		mData[index] = v;  	} -	LLSD& ImplArray::insert(LLSD::Integer i, const LLSD& v) +	void ImplArray::insert(LLSD::Integer i, const LLSD& v)  	{  		if (i < 0) { -			#ifdef LL_MSVC7 -				return *((LLSD*)this); -			#else -				return *dynamic_cast<LLSD*>(this); -			#endif +			return;  		}  		DataVector::size_type index = i; @@ -516,11 +507,6 @@ namespace  		}  		mData.insert(mData.begin() + index, v); -		#ifdef LL_MSVC7 -			return *((LLSD*)this); -		#else -			return *dynamic_cast<LLSD*>(this); -		#endif  	}  	void ImplArray::append(const LLSD& v) @@ -763,11 +749,12 @@ LLSD LLSD::emptyMap()  bool LLSD::has(const String& k) const	{ return safe(impl).has(k); }  LLSD LLSD::get(const String& k) const	{ return safe(impl).get(k); }  +void LLSD::insert(const String& k, const LLSD& v) {	makeMap(impl).insert(k, v); } -LLSD& LLSD::insert(const String& k, const LLSD& v) +LLSD& LLSD::with(const String& k, const LLSD& v)  										{   											makeMap(impl).insert(k, v);  -											return *dynamic_cast<LLSD*>(this); +											return *this;  										}  void LLSD::erase(const String& k)		{ makeMap(impl).erase(k); } @@ -788,8 +775,9 @@ int LLSD::size() const					{ return safe(impl).size(); }  LLSD LLSD::get(Integer i) const			{ return safe(impl).get(i); }   void LLSD::set(Integer i, const LLSD& v){ makeArray(impl).set(i, v); } +void LLSD::insert(Integer i, const LLSD& v) { makeArray(impl).insert(i, v); } -LLSD& LLSD::insert(Integer i, const LLSD& v) +LLSD& LLSD::with(Integer i, const LLSD& v)  										{   											makeArray(impl).insert(i, v);   											return *this; diff --git a/indra/llcommon/llsd.h b/indra/llcommon/llsd.h index 552bb57498..135133c19c 100644 --- a/indra/llcommon/llsd.h +++ b/indra/llcommon/llsd.h @@ -223,8 +223,9 @@ public:  		bool has(const String&) const;  		LLSD get(const String&) const; -		LLSD& insert(const String&, const LLSD&); +		void insert(const String&, const LLSD&);  		void erase(const String&); +		LLSD& with(const String&, const LLSD&);  		LLSD& operator[](const String&);  		LLSD& operator[](const char* c)			{ return (*this)[String(c)]; } @@ -238,9 +239,10 @@ public:  		LLSD get(Integer) const;  		void set(Integer, const LLSD&); -		LLSD& insert(Integer, const LLSD&); +		void insert(Integer, const LLSD&);  		void append(const LLSD&);  		void erase(Integer); +		LLSD& with(Integer, const LLSD&);  		const LLSD& operator[](Integer) const;  		LLSD& operator[](Integer); diff --git a/indra/llcommon/llsingleton.h b/indra/llcommon/llsingleton.h index f55fafadd8..ddeb4d1489 100644 --- a/indra/llcommon/llsingleton.h +++ b/indra/llcommon/llsingleton.h @@ -35,7 +35,6 @@  #include <typeinfo>  #include <boost/noncopyable.hpp> -#include <boost/any.hpp>  /// @brief A global registry of all singletons to prevent duplicate allocations  /// across shared library boundaries diff --git a/indra/llcommon/llstring.cpp b/indra/llcommon/llstring.cpp index c027aa7bdd..5f3d9d6582 100644 --- a/indra/llcommon/llstring.cpp +++ b/indra/llcommon/llstring.cpp @@ -985,6 +985,15 @@ bool LLStringUtil::formatDatetime(std::string& replacement, std::string token,  		return true;  	}  	replacement = datetime.toHTTPDateString(code); + +	// *HACK: delete leading zero from hour string in case 'hour12' (code = %I) time format +	// to show time without leading zero, e.g. 08:16 -> 8:16 (EXT-2738). +	// We could have used '%l' format instead, but it's not supported by Windows. +	if(code == "%I" && token == "hour12" && replacement.at(0) == '0') +	{ +		replacement = replacement.at(1); +	} +  	return !code.empty();  } diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp index cba8cf85b0..0272c55db2 100644 --- a/indra/llcommon/llsys.cpp +++ b/indra/llcommon/llsys.cpp @@ -77,72 +77,72 @@ static const S32 CPUINFO_BUFFER_SIZE = 16383;  LLCPUInfo gSysCPU;  #if LL_WINDOWS -#ifndef DLLVERSIONINFO
 -typedef struct _DllVersionInfo
 -{
 -    DWORD cbSize;
 -    DWORD dwMajorVersion;
 -    DWORD dwMinorVersion;
 -    DWORD dwBuildNumber;
 -    DWORD dwPlatformID;
 -}DLLVERSIONINFO;
 -#endif
 -
 -#ifndef DLLGETVERSIONPROC
 -typedef int (FAR WINAPI *DLLGETVERSIONPROC) (DLLVERSIONINFO *);
 -#endif
 -
 -bool get_shell32_dll_version(DWORD& major, DWORD& minor, DWORD& build_number)
 -{
 -	bool result = false;
 -	const U32 BUFF_SIZE = 32767;
 -	WCHAR tempBuf[BUFF_SIZE];
 -	if(GetSystemDirectory((LPWSTR)&tempBuf, BUFF_SIZE))
 -	{
 -		
 -		std::basic_string<WCHAR> shell32_path(tempBuf);
 -
 -		// Shell32.dll contains the DLLGetVersion function. 
 -		// according to msdn its not part of the API
 -		// so you have to go in and get it.
 -		// http://msdn.microsoft.com/en-us/library/bb776404(VS.85).aspx
 -		shell32_path += TEXT("\\shell32.dll");
 -
 -		HMODULE hDllInst = LoadLibrary(shell32_path.c_str());   //load the DLL
 -		if(hDllInst) 
 -		{  // Could successfully load the DLL
 -			DLLGETVERSIONPROC pDllGetVersion;
 -			/*
 -			You must get this function explicitly because earlier versions of the DLL
 -			don't implement this function. That makes the lack of implementation of the
 -			function a version marker in itself.
 -			*/
 -			pDllGetVersion = (DLLGETVERSIONPROC) GetProcAddress(hDllInst, 
 -																"DllGetVersion");
 -
 -			if(pDllGetVersion) 
 -			{    
 -				// DLL supports version retrieval function
 -				DLLVERSIONINFO    dvi;
 -
 -				ZeroMemory(&dvi, sizeof(dvi));
 -				dvi.cbSize = sizeof(dvi);
 -				HRESULT hr = (*pDllGetVersion)(&dvi);
 -
 -				if(SUCCEEDED(hr)) 
 -				{ // Finally, the version is at our hands
 -					major = dvi.dwMajorVersion;
 -					minor = dvi.dwMinorVersion;
 -					build_number = dvi.dwBuildNumber;
 -					result = true;
 -				} 
 -			} 
 -
 -			FreeLibrary(hDllInst);  // Release DLL
 -		} 
 -	}
 -	return result;
 -}
 +#ifndef DLLVERSIONINFO +typedef struct _DllVersionInfo +{ +    DWORD cbSize; +    DWORD dwMajorVersion; +    DWORD dwMinorVersion; +    DWORD dwBuildNumber; +    DWORD dwPlatformID; +}DLLVERSIONINFO; +#endif + +#ifndef DLLGETVERSIONPROC +typedef int (FAR WINAPI *DLLGETVERSIONPROC) (DLLVERSIONINFO *); +#endif + +bool get_shell32_dll_version(DWORD& major, DWORD& minor, DWORD& build_number) +{ +	bool result = false; +	const U32 BUFF_SIZE = 32767; +	WCHAR tempBuf[BUFF_SIZE]; +	if(GetSystemDirectory((LPWSTR)&tempBuf, BUFF_SIZE)) +	{ +		 +		std::basic_string<WCHAR> shell32_path(tempBuf); + +		// Shell32.dll contains the DLLGetVersion function.  +		// according to msdn its not part of the API +		// so you have to go in and get it. +		// http://msdn.microsoft.com/en-us/library/bb776404(VS.85).aspx +		shell32_path += TEXT("\\shell32.dll"); + +		HMODULE hDllInst = LoadLibrary(shell32_path.c_str());   //load the DLL +		if(hDllInst)  +		{  // Could successfully load the DLL +			DLLGETVERSIONPROC pDllGetVersion; +			/* +			You must get this function explicitly because earlier versions of the DLL +			don't implement this function. That makes the lack of implementation of the +			function a version marker in itself. +			*/ +			pDllGetVersion = (DLLGETVERSIONPROC) GetProcAddress(hDllInst,  +																"DllGetVersion"); + +			if(pDllGetVersion)  +			{     +				// DLL supports version retrieval function +				DLLVERSIONINFO    dvi; + +				ZeroMemory(&dvi, sizeof(dvi)); +				dvi.cbSize = sizeof(dvi); +				HRESULT hr = (*pDllGetVersion)(&dvi); + +				if(SUCCEEDED(hr))  +				{ // Finally, the version is at our hands +					major = dvi.dwMajorVersion; +					minor = dvi.dwMinorVersion; +					build_number = dvi.dwBuildNumber; +					result = true; +				}  +			}  + +			FreeLibrary(hDllInst);  // Release DLL +		}  +	} +	return result; +}  #endif // LL_WINDOWS  LLOSInfo::LLOSInfo() : | 
