Hi, I have submitted a patch for review:
https://gerrit.libreoffice.org/1625 To pull it, you can do: git pull ssh://gerrit.libreoffice.org:29418/core refs/changes/25/1625/1 Create OUString::valueInt, valueBool and valueChar function templates. Cleans up the call sites by hiding the necessary casts. Change-Id: Id3d150a6525eb0334e41e2ec6640bb06cd790b43 --- M sal/CppunitTest_sal_rtl_strings.mk M sal/inc/rtl/ustring.hxx A sal/qa/rtl/strings/test_oustring_valuex.cxx 3 files changed, 98 insertions(+), 0 deletions(-) diff --git a/sal/CppunitTest_sal_rtl_strings.mk b/sal/CppunitTest_sal_rtl_strings.mk index a30bf70..9ca6e7b 100644 --- a/sal/CppunitTest_sal_rtl_strings.mk +++ b/sal/CppunitTest_sal_rtl_strings.mk @@ -38,6 +38,7 @@ sal/qa/rtl/strings/test_oustring_noadditional \ sal/qa/rtl/strings/test_oustring_startswith \ sal/qa/rtl/strings/test_oustring_stringliterals \ + sal/qa/rtl/strings/test_oustring_valuex \ )) $(eval $(call gb_CppunitTest_use_libraries,sal_rtl_strings,\ diff --git a/sal/inc/rtl/ustring.hxx b/sal/inc/rtl/ustring.hxx index c9fe25e..2a598d3 100644 --- a/sal/inc/rtl/ustring.hxx +++ b/sal/inc/rtl/ustring.hxx @@ -2088,6 +2088,36 @@ } /** + Returns the string representation of the long argument. + This is here because when choosing + which conversion for overloaded functions is better, the standard treats all + integer conversions the same. + + This function can't be used for language specific conversion. + + @param ll a int64. + @param radix the radix (between 2 and 36) + @return a string with the string representation of the argument. + */ + template< typename T > + static OUString valueInt(T i, sal_Int16 radix = 10) SAL_THROW(()) + { + return valueOf( static_cast<sal_Int32>(i), radix ); + } + + template< typename T > + static OUString valueBool(T i) SAL_THROW(()) + { + return valueOf( static_cast<sal_Bool>(i) ); + } + + template< typename T > + static OUString valueChar(T i) SAL_THROW(()) + { + return valueOf( static_cast<sal_Unicode>(i) ); + } + + /** Returns the string representation of the float argument. This function can't be used for language specific conversion. diff --git a/sal/qa/rtl/strings/test_oustring_valuex.cxx b/sal/qa/rtl/strings/test_oustring_valuex.cxx new file mode 100644 index 0000000..e86f5e7 --- /dev/null +++ b/sal/qa/rtl/strings/test_oustring_valuex.cxx @@ -0,0 +1,67 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <sal/types.h> +#include <cppunit/TestFixture.h> +#include <cppunit/extensions/HelperMacros.h> +#include "rtl/ustring.hxx" + +namespace test { namespace oustring { + +class valueX : public CppUnit::TestFixture { +public: + void testBool(); + void testChar(); + void testInt(); + + CPPUNIT_TEST_SUITE(valueX); + CPPUNIT_TEST(testBool); + CPPUNIT_TEST(testChar); + CPPUNIT_TEST(testInt); + CPPUNIT_TEST_SUITE_END(); +}; + +} } + +CPPUNIT_TEST_SUITE_REGISTRATION(test::oustring::valueX); + +void test::oustring::valueX::testBool() { + rtl::OUString val1 = rtl::OUString::valueOf( sal_True ); + rtl::OUString val2 = rtl::OUString::valueBool( sal_True ); + CPPUNIT_ASSERT( val1 == val2 ); + val1 = rtl::OUString::valueOf( sal_False ); + val2 = rtl::OUString::valueBool( sal_False ); + CPPUNIT_ASSERT( val1 == val2 ); + val1 = rtl::OUString::valueOf( static_cast<sal_Bool>(1) ); + val2 = rtl::OUString::valueBool( 1 ); + CPPUNIT_ASSERT( val1 == val2 ); + val1 = rtl::OUString::valueOf( static_cast<sal_Bool>(0) ); + val2 = rtl::OUString::valueBool( 0 ); + CPPUNIT_ASSERT( val1 == val2 ); + val1 = rtl::OUString::valueOf( static_cast<sal_Bool>('X') ); + val2 = rtl::OUString::valueBool( 'X' ); + CPPUNIT_ASSERT( val1 == val2 ); + val1 = rtl::OUString::valueOf( static_cast<sal_Bool>(NULL) ); + val2 = rtl::OUString::valueBool( NULL ); + CPPUNIT_ASSERT( val1 == val2 ); +} + +void test::oustring::valueX::testChar() { + rtl::OUString val1 = rtl::OUString::valueOf( static_cast<sal_Unicode>('X') ); + rtl::OUString val2 = rtl::OUString::valueChar( 'X' ); + CPPUNIT_ASSERT( val1 == val2 ); +} + +void test::oustring::valueX::testInt() { + rtl::OUString val1 = rtl::OUString::valueOf( 30039062 ); + rtl::OUString val2 = rtl::OUString::valueInt( 30039062 ); + CPPUNIT_ASSERT( val1 == val2 ); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ -- To view, visit https://gerrit.libreoffice.org/1625 To unsubscribe, visit https://gerrit.libreoffice.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Id3d150a6525eb0334e41e2ec6640bb06cd790b43 Gerrit-PatchSet: 1 Gerrit-Project: core Gerrit-Branch: master Gerrit-Owner: Noel Grandin <noelgran...@gmail.com> _______________________________________________ LibreOffice mailing list LibreOffice@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice