From 3858992603aabbdfdcdd9f3d8040a2d3431e74d0 Mon Sep 17 00:00:00 2001 From: James Cook Date: Fri, 27 Nov 2009 22:24:57 -0800 Subject: Add CMake var LL_TESTS to optionally disable tests for build timing --- indra/llcommon/CMakeLists.txt | 57 ++++++++++++++++++++++--------------------- 1 file changed, 29 insertions(+), 28 deletions(-) (limited to 'indra/llcommon') diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt index 416303342a..ca8d0829fa 100644 --- a/indra/llcommon/CMakeLists.txt +++ b/indra/llcommon/CMakeLists.txt @@ -265,33 +265,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) -- cgit v1.2.3 From cb29ce124378f068009a7e0c930f86bc17b7257f Mon Sep 17 00:00:00 2001 From: James Cook Date: Sat, 28 Nov 2009 16:39:50 -0800 Subject: Move hard-coded image IDs to .cpp file to speed link time. --- indra/llcommon/CMakeLists.txt | 1 + indra/llcommon/imageids.cpp | 76 +++++++++++++++++++++++++++++++++++++++++++ indra/llcommon/imageids.h | 57 +++++++++++++++----------------- 3 files changed, 104 insertions(+), 30 deletions(-) create mode 100644 indra/llcommon/imageids.cpp (limited to 'indra/llcommon') diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt index ca8d0829fa..ab66f634ee 100644 --- a/indra/llcommon/CMakeLists.txt +++ b/indra/llcommon/CMakeLists.txt @@ -25,6 +25,7 @@ include_directories( # ${LLCOMMON_LIBRARIES}) set(llcommon_SOURCE_FILES + imageids.cpp llallocator.cpp llallocator_heap_profile.cpp llapp.cpp 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..7bae496e7f 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 +extern const LLUUID IMG_SMOKE; -const LLUUID IMG_DEFAULT ("d2114404-dd59-4a4d-8e6c-49359e91bbf0"); // VIEWER +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 +extern const LLUUID IMG_SUN; +extern const LLUUID IMG_MOON; +extern const LLUUID IMG_CLOUD_POOF; +extern const LLUUID IMG_SHOT; +extern const LLUUID IMG_SPARK; +extern const LLUUID IMG_FIRE; +extern const LLUUID IMG_FACE_SELECT; +extern const LLUUID IMG_DEFAULT_AVATAR; +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 +extern const LLUUID IMG_EXPLOSION; +extern const LLUUID IMG_EXPLOSION_2; +extern const LLUUID IMG_EXPLOSION_3; +extern const LLUUID IMG_EXPLOSION_4; +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 +extern const LLUUID IMG_BIG_EXPLOSION_1; +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 +extern const LLUUID IMG_BLOOM1; +extern const LLUUID TERRAIN_DIRT_DETAIL; +extern const LLUUID TERRAIN_GRASS_DETAIL; +extern const LLUUID TERRAIN_MOUNTAIN_DETAIL; +extern const LLUUID TERRAIN_ROCK_DETAIL; -const LLUUID DEFAULT_WATER_NORMAL ("822ded49-9a6c-f61c-cb89-6df54f42cdf4"); // VIEWER +extern const LLUUID DEFAULT_WATER_NORMAL; #endif -- cgit v1.2.3 From 8ff96a3515daa5c05d1c519f920c12b7aa78c4da Mon Sep 17 00:00:00 2001 From: James Cook Date: Sat, 28 Nov 2009 20:08:09 -0800 Subject: Migrated LLUUIDs and some float constants out of headers into .cpp files Moved some functions with llinfos into .cpp files Linker optimizations, all --- indra/llcommon/CMakeLists.txt | 1 + indra/llcommon/indra_constants.cpp | 46 +++++++++++++++++++++++++++++++++ indra/llcommon/indra_constants.h | 19 +++++++------- indra/llcommon/linden_common.h | 2 ++ indra/llcommon/lldictionary.cpp | 52 ++++++++++++++++++++++++++++++++++++++ indra/llcommon/lldictionary.h | 16 ++---------- 6 files changed, 113 insertions(+), 23 deletions(-) create mode 100644 indra/llcommon/indra_constants.cpp create mode 100644 indra/llcommon/lldictionary.cpp (limited to 'indra/llcommon') diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt index ab66f634ee..f5b0e998fd 100644 --- a/indra/llcommon/CMakeLists.txt +++ b/indra/llcommon/CMakeLists.txt @@ -40,6 +40,7 @@ set(llcommon_SOURCE_FILES llcursortypes.cpp lldate.cpp lldependencies.cpp + lldictionary.cpp llerror.cpp llerrorthread.cpp llevent.cpp 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..5ce5fc4673 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,14 @@ 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"); +extern const LLUUID LL_UUID_ALL_AGENTS; // 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"); +extern const LLUUID ALEXANDRIA_LINDEN_ID; // inventory library owner +extern const LLUUID GOVERNOR_LINDEN_ID; +extern const LLUUID REALESTATE_LINDEN_ID; // Maintenance's group id. -const LLUUID MAINTENANCE_GROUP_ID("dc7b21cd-3c89-fcaa-31c8-25f9ffd224cd"); +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 #include #include 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..a8a34a89a5 100644 --- a/indra/llcommon/lldictionary.h +++ b/indra/llcommon/lldictionary.h @@ -33,23 +33,11 @@ #define LL_LLDICTIONARY_H #include +#include struct 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; -- cgit v1.2.3 From 895d528524bd340285fa04e355e49d5ab76b3787 Mon Sep 17 00:00:00 2001 From: James Cook Date: Sat, 28 Nov 2009 20:56:15 -0800 Subject: Fix build - exported globals must have LL_COMMON_API tag --- indra/llcommon/indra_constants.h | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'indra/llcommon') diff --git a/indra/llcommon/indra_constants.h b/indra/llcommon/indra_constants.h index 5ce5fc4673..064841a95a 100644 --- a/indra/llcommon/indra_constants.h +++ b/indra/llcommon/indra_constants.h @@ -267,14 +267,15 @@ const U8 GOD_LIKE = 1; const U8 GOD_NOT = 0; // "agent id" for things that should be done to ALL agents -extern const LLUUID LL_UUID_ALL_AGENTS; +extern LL_COMMON_API const LLUUID LL_UUID_ALL_AGENTS; -// Governor Linden's agent id. -extern const LLUUID ALEXANDRIA_LINDEN_ID; // inventory library owner -extern const LLUUID GOVERNOR_LINDEN_ID; -extern const LLUUID REALESTATE_LINDEN_ID; +// inventory library owner +extern LL_COMMON_API const LLUUID ALEXANDRIA_LINDEN_ID; + +extern LL_COMMON_API const LLUUID GOVERNOR_LINDEN_ID; +extern LL_COMMON_API const LLUUID REALESTATE_LINDEN_ID; // Maintenance's group id. -extern const LLUUID MAINTENANCE_GROUP_ID; +extern LL_COMMON_API const LLUUID MAINTENANCE_GROUP_ID; // Flags for kick message const U32 KICK_FLAGS_DEFAULT = 0x0; -- cgit v1.2.3 From e9b07c480abdc130fcacbbb75872edef71d0826b Mon Sep 17 00:00:00 2001 From: James Cook Date: Sat, 28 Nov 2009 23:10:38 -0800 Subject: Fix build, missed a file and items need LL_COMMON_API --- indra/llcommon/CMakeLists.txt | 1 + indra/llcommon/imageids.h | 48 ++++++++++++++++++++-------------------- indra/llcommon/indra_constants.h | 10 ++++----- 3 files changed, 30 insertions(+), 29 deletions(-) (limited to 'indra/llcommon') diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt index f5b0e998fd..eb0d180a4b 100644 --- a/indra/llcommon/CMakeLists.txt +++ b/indra/llcommon/CMakeLists.txt @@ -26,6 +26,7 @@ include_directories( set(llcommon_SOURCE_FILES imageids.cpp + indra_constants.cpp llallocator.cpp llallocator_heap_profile.cpp llapp.cpp diff --git a/indra/llcommon/imageids.h b/indra/llcommon/imageids.h index 7bae496e7f..dc726dcf53 100644 --- a/indra/llcommon/imageids.h +++ b/indra/llcommon/imageids.h @@ -41,35 +41,35 @@ class LLUUID; -extern const LLUUID IMG_SMOKE; +LL_COMMON_API extern const LLUUID IMG_SMOKE; -extern const LLUUID IMG_DEFAULT; +LL_COMMON_API extern const LLUUID IMG_DEFAULT; -extern const LLUUID IMG_SUN; -extern const LLUUID IMG_MOON; -extern const LLUUID IMG_CLOUD_POOF; -extern const LLUUID IMG_SHOT; -extern const LLUUID IMG_SPARK; -extern const LLUUID IMG_FIRE; -extern const LLUUID IMG_FACE_SELECT; -extern const LLUUID IMG_DEFAULT_AVATAR; -extern const LLUUID IMG_INVISIBLE; +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; -extern const LLUUID IMG_EXPLOSION; -extern const LLUUID IMG_EXPLOSION_2; -extern const LLUUID IMG_EXPLOSION_3; -extern const LLUUID IMG_EXPLOSION_4; -extern const LLUUID IMG_SMOKE_POOF; +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; -extern const LLUUID IMG_BIG_EXPLOSION_1; -extern const LLUUID IMG_BIG_EXPLOSION_2; +LL_COMMON_API extern const LLUUID IMG_BIG_EXPLOSION_1; +LL_COMMON_API extern const LLUUID IMG_BIG_EXPLOSION_2; -extern const LLUUID IMG_BLOOM1; -extern const LLUUID TERRAIN_DIRT_DETAIL; -extern const LLUUID TERRAIN_GRASS_DETAIL; -extern const LLUUID TERRAIN_MOUNTAIN_DETAIL; -extern const LLUUID TERRAIN_ROCK_DETAIL; +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; -extern const LLUUID DEFAULT_WATER_NORMAL; +LL_COMMON_API extern const LLUUID DEFAULT_WATER_NORMAL; #endif diff --git a/indra/llcommon/indra_constants.h b/indra/llcommon/indra_constants.h index 064841a95a..d4a07d77cc 100644 --- a/indra/llcommon/indra_constants.h +++ b/indra/llcommon/indra_constants.h @@ -267,15 +267,15 @@ const U8 GOD_LIKE = 1; const U8 GOD_NOT = 0; // "agent id" for things that should be done to ALL agents -extern LL_COMMON_API const LLUUID LL_UUID_ALL_AGENTS; +LL_COMMON_API extern const LLUUID LL_UUID_ALL_AGENTS; // inventory library owner -extern LL_COMMON_API const LLUUID ALEXANDRIA_LINDEN_ID; +LL_COMMON_API extern const LLUUID ALEXANDRIA_LINDEN_ID; -extern LL_COMMON_API const LLUUID GOVERNOR_LINDEN_ID; -extern LL_COMMON_API const LLUUID REALESTATE_LINDEN_ID; +LL_COMMON_API extern const LLUUID GOVERNOR_LINDEN_ID; +LL_COMMON_API extern const LLUUID REALESTATE_LINDEN_ID; // Maintenance's group id. -extern LL_COMMON_API const LLUUID MAINTENANCE_GROUP_ID; +LL_COMMON_API extern const LLUUID MAINTENANCE_GROUP_ID; // Flags for kick message const U32 KICK_FLAGS_DEFAULT = 0x0; -- cgit v1.2.3 From 491cbc5de6eaa960ca582ac0fcc064c3c8bac08c Mon Sep 17 00:00:00 2001 From: James Cook Date: Sat, 28 Nov 2009 23:50:14 -0800 Subject: Suppress MSVC warning about extern template for linker optimization --- indra/llcommon/llpreprocessor.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'indra/llcommon') diff --git a/indra/llcommon/llpreprocessor.h b/indra/llcommon/llpreprocessor.h index bb3301df9f..da03230b47 100644 --- a/indra/llcommon/llpreprocessor.h +++ b/indra/llcommon/llpreprocessor.h @@ -123,6 +123,8 @@ #pragma warning( 3 : 4265 ) // "class has virtual functions, but destructor is not virtual" #pragma warning( 3 : 4266 ) // 'function' : no override available for virtual member function from base 'type'; function is hidden #pragma warning (disable : 4180) // qualifier applied to function type has no meaning; ignored +// Linker optimization with "extern template" generates this innocuous warning +#pragma warning( disable : 4231 ) // nonstandard extension used : 'extern' before template explicit instantiation #pragma warning( disable : 4284 ) // silly MS warning deep inside their include file #pragma warning( disable : 4503 ) // 'decorated name length exceeded, name was truncated'. Does not seem to affect compilation. #pragma warning( disable : 4800 ) // 'BOOL' : forcing value to bool 'true' or 'false' (performance warning) -- cgit v1.2.3 From 30cb8d566ea47800d0bc5f253b957e01101b980a Mon Sep 17 00:00:00 2001 From: James Cook Date: Sun, 29 Nov 2009 12:53:09 -0800 Subject: Missed another LL_COMMON_API tag --- indra/llcommon/lldictionary.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/llcommon') diff --git a/indra/llcommon/lldictionary.h b/indra/llcommon/lldictionary.h index a8a34a89a5..95178b41e7 100644 --- a/indra/llcommon/lldictionary.h +++ b/indra/llcommon/lldictionary.h @@ -35,7 +35,7 @@ #include #include -struct LLDictionaryEntry +struct LL_COMMON_API LLDictionaryEntry { LLDictionaryEntry(const std::string &name); virtual ~LLDictionaryEntry() {} -- cgit v1.2.3 From 7d3b3cc474822db144b623980d08b7addc2f77ff Mon Sep 17 00:00:00 2001 From: James Cook Date: Mon, 30 Nov 2009 14:41:52 -0800 Subject: Linker optimization - use "extern template" for commonly regenerated templates Also replaced many duplicate calls to LLViewerCamera::getInstance() with local pointer. Reviewed with Ambroff --- indra/llcommon/llpreprocessor.h | 6 ++++-- indra/llcommon/llsingleton.h | 1 - 2 files changed, 4 insertions(+), 3 deletions(-) (limited to 'indra/llcommon') diff --git a/indra/llcommon/llpreprocessor.h b/indra/llcommon/llpreprocessor.h index da03230b47..5eefa6a16b 100644 --- a/indra/llcommon/llpreprocessor.h +++ b/indra/llcommon/llpreprocessor.h @@ -123,13 +123,15 @@ #pragma warning( 3 : 4265 ) // "class has virtual functions, but destructor is not virtual" #pragma warning( 3 : 4266 ) // 'function' : no override available for virtual member function from base 'type'; function is hidden #pragma warning (disable : 4180) // qualifier applied to function type has no meaning; ignored -// Linker optimization with "extern template" generates this innocuous warning -#pragma warning( disable : 4231 ) // nonstandard extension used : 'extern' before template explicit instantiation #pragma warning( disable : 4284 ) // silly MS warning deep inside their include file #pragma warning( disable : 4503 ) // 'decorated name length exceeded, name was truncated'. Does not seem to affect compilation. #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/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 #include -#include /// @brief A global registry of all singletons to prevent duplicate allocations /// across shared library boundaries -- cgit v1.2.3 From e8ec98c3075bf1086e872fdd24788de34ff4ad45 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" Date: Tue, 1 Dec 2009 12:06:31 -0500 Subject: line ending fixes --HG-- branch : avatar-pipeline --- indra/llcommon/llsys.cpp | 132 +++++++++++++++++++++++------------------------ 1 file changed, 66 insertions(+), 66 deletions(-) (limited to 'indra/llcommon') 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 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 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() : -- cgit v1.2.3 From f496c2b164a100836d74909c3e27adcdf98018f0 Mon Sep 17 00:00:00 2001 From: Kent Quirk Date: Tue, 1 Dec 2009 20:59:08 -0500 Subject: DEV-43622 : API change (no functionality change) to fix a design error in LLSD I made it about a year and a half ago; Zero found it while reading code. I had added a return value to LLSD::insert(), but a) did it wrong, and b) broke the STL-like semantics of insert(). So I've put insert() back to returning void and created LLSD::with(), which does what my earlier insert() did. The compiler then caught all the cases where insert()'s return value were being used, and I changed those to use with() instead. --- indra/llcommon/llsd.cpp | 32 ++++++++++---------------------- indra/llcommon/llsd.h | 6 ++++-- 2 files changed, 14 insertions(+), 24 deletions(-) (limited to 'indra/llcommon') 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(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(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(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(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); -- cgit v1.2.3 From a7eb37012b2d5b0b30ad7f9f06d4e0f4c590e5e8 Mon Sep 17 00:00:00 2001 From: Paul Guslisty Date: Wed, 2 Dec 2009 12:05:01 +0200 Subject: fixed normal bug EXT-2738 ([BSI] 12-hour clock format should not have a leading zero) --HG-- branch : product-engine --- indra/llcommon/llstring.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'indra/llcommon') 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(); } -- cgit v1.2.3