summaryrefslogtreecommitdiff
path: root/stoc/source/typeconv/convert.cxx
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2016-06-21 14:05:17 +0200
committerStephan Bergmann <sbergman@redhat.com>2016-06-21 14:05:17 +0200
commit9cef658364e4d8441f490e4fe89c3bfa14cd24b3 (patch)
treed3759856838bb9fc6af85694bbe4c594f728e8f7 /stoc/source/typeconv/convert.cxx
parent7669bf3884ac053baca04e09d7c9994870983a4a (diff)
Clean up uses of Any::getValue() in stoc
Change-Id: I455b708bfcc9d5aa71bb0ffc21efec205302169e
Diffstat (limited to 'stoc/source/typeconv/convert.cxx')
-rw-r--r--stoc/source/typeconv/convert.cxx80
1 files changed, 41 insertions, 39 deletions
diff --git a/stoc/source/typeconv/convert.cxx b/stoc/source/typeconv/convert.cxx
index 7b21b926d543..10d0ec539279 100644
--- a/stoc/source/typeconv/convert.cxx
+++ b/stoc/source/typeconv/convert.cxx
@@ -17,7 +17,9 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
+#include <sal/config.h>
+#include <o3tl/any.hxx>
#include <osl/diagnose.h>
#include <cppuhelper/factory.hxx>
#include <cppuhelper/implementationentry.hxx>
@@ -303,39 +305,39 @@ sal_Int64 TypeConverter_Impl::toHyper( const Any& rAny, sal_Int64 min, sal_uInt6
break;
// BOOL
case TypeClass_BOOLEAN:
- nRet = (*static_cast<sal_Bool const *>(rAny.getValue()) ? 1 : 0);
+ nRet = *o3tl::forceAccess<bool>(rAny) ? 1 : 0;
break;
// CHAR, BYTE
case TypeClass_CHAR:
- nRet = *static_cast<sal_Unicode const *>(rAny.getValue());
+ nRet = *o3tl::forceAccess<sal_Unicode>(rAny);
break;
case TypeClass_BYTE:
- nRet = *static_cast<sal_Int8 const *>(rAny.getValue());
+ nRet = *o3tl::forceAccess<sal_Int8>(rAny);
break;
// SHORT
case TypeClass_SHORT:
- nRet = *static_cast<sal_Int16 const *>(rAny.getValue());
+ nRet = *o3tl::forceAccess<sal_Int16>(rAny);
break;
// UNSIGNED SHORT
case TypeClass_UNSIGNED_SHORT:
- nRet = *static_cast<sal_uInt16 const *>(rAny.getValue());
+ nRet = *o3tl::forceAccess<sal_uInt16>(rAny);
break;
// LONG
case TypeClass_LONG:
- nRet = *static_cast<sal_Int32 const *>(rAny.getValue());
+ nRet = *o3tl::forceAccess<sal_Int32>(rAny);
break;
// UNSIGNED LONG
case TypeClass_UNSIGNED_LONG:
- nRet = *static_cast<sal_uInt32 const *>(rAny.getValue());
+ nRet = *o3tl::forceAccess<sal_uInt32>(rAny);
break;
// HYPER
case TypeClass_HYPER:
- nRet = *static_cast<sal_Int64 const *>(rAny.getValue());
+ nRet = *o3tl::forceAccess<sal_Int64>(rAny);
break;
// UNSIGNED HYPER
case TypeClass_UNSIGNED_HYPER:
{
- nRet = *static_cast<sal_Int64 const *>(rAny.getValue());
+ nRet = static_cast<sal_Int64>(*o3tl::forceAccess<sal_uInt64>(rAny));
if ((min < 0 || (sal_uInt64)nRet >= (sal_uInt64)min) && // lower bound
(sal_uInt64)nRet <= max) // upper bound
{
@@ -349,7 +351,7 @@ sal_Int64 TypeConverter_Impl::toHyper( const Any& rAny, sal_Int64 min, sal_uInt6
// FLOAT, DOUBLE
case TypeClass_FLOAT:
{
- double fVal = round( *static_cast<float const *>(rAny.getValue()) );
+ double fVal = round( *o3tl::forceAccess<float>(rAny) );
nRet = (fVal > SAL_INT64_MAX ? (sal_Int64)(sal_uInt64)fVal : (sal_Int64)fVal);
if (fVal >= min && fVal <= unsigned_int64_to_double( max ))
{
@@ -361,7 +363,7 @@ sal_Int64 TypeConverter_Impl::toHyper( const Any& rAny, sal_Int64 min, sal_uInt6
}
case TypeClass_DOUBLE:
{
- double fVal = round( *static_cast<double const *>(rAny.getValue()) );
+ double fVal = round( *o3tl::forceAccess<double>(rAny) );
nRet = (fVal > SAL_INT64_MAX ? (sal_Int64)(sal_uInt64)fVal : (sal_Int64)fVal);
if (fVal >= min && fVal <= unsigned_int64_to_double( max ))
{
@@ -376,7 +378,7 @@ sal_Int64 TypeConverter_Impl::toHyper( const Any& rAny, sal_Int64 min, sal_uInt6
case TypeClass_STRING:
{
sal_Int64 nVal = SAL_CONST_INT64(0);
- if (! getHyperValue( nVal, *static_cast<OUString const *>(rAny.getValue()) ))
+ if (! getHyperValue( nVal, *o3tl::forceAccess<OUString>(rAny) ))
{
throw CannotConvertException(
"invalid STRING value!",
@@ -418,51 +420,51 @@ double TypeConverter_Impl::toDouble( const Any& rAny, double min, double max )
break;
// BOOL
case TypeClass_BOOLEAN:
- fRet = (*static_cast<sal_Bool const *>(rAny.getValue()) ? 1.0 : 0.0);
+ fRet = *o3tl::forceAccess<bool>(rAny) ? 1.0 : 0.0;
break;
// CHAR, BYTE
case TypeClass_CHAR:
- fRet = *static_cast<sal_Unicode const *>(rAny.getValue());
+ fRet = *o3tl::forceAccess<sal_Unicode>(rAny);
break;
case TypeClass_BYTE:
- fRet = *static_cast<sal_Int8 const *>(rAny.getValue());
+ fRet = *o3tl::forceAccess<sal_Int8>(rAny);
break;
// SHORT
case TypeClass_SHORT:
- fRet = *static_cast<sal_Int16 const *>(rAny.getValue());
+ fRet = *o3tl::forceAccess<sal_Int16>(rAny);
break;
// UNSIGNED SHORT
case TypeClass_UNSIGNED_SHORT:
- fRet = *static_cast<sal_uInt16 const *>(rAny.getValue());
+ fRet = *o3tl::forceAccess<sal_uInt16>(rAny);
break;
// LONG
case TypeClass_LONG:
- fRet = *static_cast<sal_Int32 const *>(rAny.getValue());
+ fRet = *o3tl::forceAccess<sal_Int32>(rAny);
break;
// UNSIGNED LONG
case TypeClass_UNSIGNED_LONG:
- fRet = *static_cast<sal_uInt32 const *>(rAny.getValue());
+ fRet = *o3tl::forceAccess<sal_uInt32>(rAny);
break;
// HYPER
case TypeClass_HYPER:
- fRet = (double)*static_cast<sal_Int64 const *>(rAny.getValue());
+ fRet = (double)*o3tl::forceAccess<sal_Int64>(rAny);
break;
// UNSIGNED HYPER
case TypeClass_UNSIGNED_HYPER:
- fRet = unsigned_int64_to_double( *static_cast<sal_uInt64 const *>(rAny.getValue()) );
+ fRet = unsigned_int64_to_double( *o3tl::forceAccess<sal_uInt64>(rAny) );
break;
// FLOAT, DOUBLE
case TypeClass_FLOAT:
- fRet = *static_cast<float const *>(rAny.getValue());
+ fRet = *o3tl::forceAccess<float>(rAny);
break;
case TypeClass_DOUBLE:
- fRet = *static_cast<double const *>(rAny.getValue());
+ fRet = *o3tl::forceAccess<double>(rAny);
break;
// STRING
case TypeClass_STRING:
{
- if (! getNumericValue( fRet, *static_cast<OUString const *>(rAny.getValue()) ))
+ if (! getNumericValue( fRet, *o3tl::forceAccess<OUString>(rAny) ))
{
throw CannotConvertException(
"invalid STRING value!",
@@ -538,15 +540,15 @@ Any SAL_CALL TypeConverter_Impl::convertTo( const Any& rVal, const Type& aDestTy
break;
}
- if (rVal.getValueTypeClass() != TypeClass_INTERFACE ||
- !*static_cast<XInterface * const *>(rVal.getValue()))
+ auto ifc = o3tl::tryAccess<css::uno::Reference<css::uno::XInterface>>(
+ rVal);
+ if (!ifc || !ifc->is())
{
throw CannotConvertException(
"value is no interface!",
Reference< XInterface >(), aDestinationClass, FailReason::NO_SUCH_INTERFACE, 0 );
}
- if (! (aRet = (*static_cast<XInterface * const *>(rVal.getValue()))->queryInterface(
- aDestType )).hasValue())
+ if (! (aRet = (*ifc)->queryInterface(aDestType )).hasValue())
{
throw CannotConvertException(
"value has no such interface!",
@@ -626,7 +628,7 @@ Any SAL_CALL TypeConverter_Impl::convertTo( const Any& rVal, const Type& aDestTy
{
for ( nPos = reinterpret_cast<typelib_EnumTypeDescription *>(aEnumTD.get())->nEnumValues; nPos--; )
{
- if (static_cast<const OUString *>(rVal.getValue())->equalsIgnoreAsciiCase(
+ if (o3tl::forceAccess<OUString>(rVal)->equalsIgnoreAsciiCase(
reinterpret_cast<typelib_EnumTypeDescription *>(aEnumTD.get())->ppEnumNames[nPos] ))
break;
}
@@ -737,7 +739,7 @@ Any TypeConverter_Impl::convertToSimpleType( const Any& rVal, TypeClass aDestina
case TypeClass_STRING:
{
- const OUString & aStr = *static_cast<const OUString *>(rVal.getValue());
+ const OUString & aStr = *o3tl::forceAccess<OUString>(rVal);
if ( aStr == "0" || aStr.equalsIgnoreAsciiCase( "false" ))
{
aRet <<= false;
@@ -761,7 +763,7 @@ Any TypeConverter_Impl::convertToSimpleType( const Any& rVal, TypeClass aDestina
{
if (aSourceClass==TypeClass_STRING)
{
- auto const s = static_cast<const OUString *>(rVal.getValue());
+ auto const s = o3tl::forceAccess<OUString>(rVal);
if (s->getLength() == 1) // single char
aRet <<= (*s)[0];
}
@@ -838,31 +840,31 @@ Any TypeConverter_Impl::convertToSimpleType( const Any& rVal, TypeClass aDestina
}
case TypeClass_BOOLEAN:
- aRet <<= *static_cast<sal_Bool const *>(rVal.getValue()) ?
+ aRet <<= *o3tl::forceAccess<bool>(rVal) ?
OUString("true") :
OUString("false");
break;
case TypeClass_CHAR:
- aRet <<= OUString( static_cast<sal_Unicode const *>(rVal.getValue()), 1 );
+ aRet <<= OUString(*o3tl::forceAccess<sal_Unicode>(rVal));
break;
case TypeClass_BYTE:
- aRet <<= OUString::number( *static_cast<sal_Int8 const *>(rVal.getValue()) );
+ aRet <<= OUString::number( *o3tl::forceAccess<sal_Int8>(rVal) );
break;
case TypeClass_SHORT:
- aRet <<= OUString::number( *static_cast<sal_Int16 const *>(rVal.getValue()) );
+ aRet <<= OUString::number( *o3tl::forceAccess<sal_Int16>(rVal) );
break;
case TypeClass_UNSIGNED_SHORT:
- aRet <<= OUString::number( *static_cast<sal_uInt16 const *>(rVal.getValue()) );
+ aRet <<= OUString::number( *o3tl::forceAccess<sal_uInt16>(rVal) );
break;
case TypeClass_LONG:
- aRet <<= OUString::number( *static_cast<sal_Int32 const *>(rVal.getValue()) );
+ aRet <<= OUString::number( *o3tl::forceAccess<sal_Int32>(rVal) );
break;
case TypeClass_UNSIGNED_LONG:
- aRet <<= OUString::number( *static_cast<sal_uInt32 const *>(rVal.getValue()) );
+ aRet <<= OUString::number( *o3tl::forceAccess<sal_uInt32>(rVal) );
break;
case TypeClass_HYPER:
- aRet <<= OUString::number( *static_cast<sal_Int64 const *>(rVal.getValue()) );
+ aRet <<= OUString::number( *o3tl::forceAccess<sal_Int64>(rVal) );
break;
// case TypeClass_UNSIGNED_HYPER:
// aRet <<= OUString::valueOf( (sal_Int64)*(sal_uInt64 const *)rVal.getValue() );