namespace com
{ namespace sun
{ namespace star
{ namespace uno
{
class Type; template<class interface_type> class Reference;
/** C++ class representing an IDL any. ThisclassisusedtotransportanytypedefinedinIDL.Theclassinheritsfromthe binaryCrepresentationofuno_Any. Youcaninsertavaluebyusingthe<<=operators. Noanycanholdanany.Youcanextractvaluesfromananybyusingthe>>=operatorswhich returntrueiftheanycontainsanassignablevalue(nodataloss),e.g.theanycontainsa shortandyou>>=itintoalongvariable.
*/ class SAL_WARN_UNUSED SAL_DLLPUBLIC_RTTI Any : public uno_Any
{ public: /// @cond INTERNAL // these are here to force memory de/allocation to sal lib. staticvoid * SAL_CALL operatornew ( size_t nSize )
{ return ::rtl_allocateMemory( nSize ); } staticvoid SAL_CALL operatordelete ( void * pMem )
{ ::rtl_freeMemory( pMem ); } staticvoid * SAL_CALL operatornew ( size_t, void * pMem )
{ return pMem; } staticvoid SAL_CALL operatordelete ( void *, void * )
{} /// @endcond
/** Default constructor: Any holds no value; its type is void.
*/ inline Any();
/** Templated ctor. Sets a copy of the given value.
@paramvaluevalueoftheAny
*/ template <typename T> explicitinline Any( T const & value ); /// Ctor support for C++ bool. explicitinline Any( bool value );
@returnaTypeobjectofthesetvalue
*/ const Type & SAL_CALL getValueType() const
{ return * reinterpret_cast< const Type * >( &pType ); } /** Gets the type of the set value.
/** Gets the type description of the set value. Provides ownership of the type description! Callanexplicittypelib_typedescription_release()toreleaseafterwards.
/** Provides a value of specified type, so you can easily write e.g. <pre> sal_Int32myVal=myAny.get<sal_Int32>(); </pre> Wideningconversionwithoutdatalossistakenintoaccount. Throwsacom::sun::star::uno::RuntimeExceptionifthespecifiedtype cannotbeprovided.
/** Sets a value. If the any already contains a value, that value will be destructed anditsmemoryfreed.
@parampData_pointertovalue @paramrTypetypeofvalue
*/ inlinevoid SAL_CALL setValue( constvoid * pData_, const Type & rType ); /** Sets a value. If the any already contains a value, that value will be destructed anditsmemoryfreed.
@parampData_pointertovalue @parampType_typeofvalue
*/ inlinevoid SAL_CALL setValue( constvoid * pData_, typelib_TypeDescriptionReference * pType_ ); /** Sets a value. If the any already contains a value, that value will be destructed anditsmemoryfreed.
/** Clears this any. If the any already contains a value, that value will be destructed anditsmemoryfreed.Afterthishasbeencalled,theanydoesnotcontainavalue.
*/ inlinevoid SAL_CALL clear();
/** Tests whether this any is extractable to a value of given type. Wideningconversionwithoutdatalossistakenintoaccount.
#ifdefined LIBO_INTERNAL_ONLY // Similar to Reference::query/queryThrow, these allow to simplify calling constructors of // Reference taking Any. queryThrow is functionally similar to get(), but doesn't require // to specify the full Reference type explicitly, only the interface type. template<class interface_type> inline Reference<interface_type> query() const; template<class interface_type> inline Reference<interface_type> queryThrow() const; #endif
private: #if !defined LIBO_INTERNAL_ONLY /// @cond INTERNAL // Forbid use with ambiguous type (sal_Unicode, sal_uInt16): explicit Any(sal_uInt16) SAL_DELETED_FUNCTION; /// @endcond #endif
};
#if !defined LIBO_INTERNAL_ONLY /// @cond INTERNAL // Forbid use with ambiguous type (sal_Unicode, sal_uInt16): template<> sal_uInt16 Any::get<sal_uInt16>() const SAL_DELETED_FUNCTION; template<> bool Any::has<sal_uInt16>() const SAL_DELETED_FUNCTION; /// @endcond #endif
#if !defined LIBO_INTERNAL_ONLY /** Template function to generically construct an any from a C++ value.
template<> inlinebool fromAny(Any const & any, Any * value);
#endif
class BaseReference;
/** Template binary <<= operator to set the value of an any.
@tparamCvaluetype @paramrAnydestinationany(leftside) @paramvaluesourcevalue(rightside)
*/ template< class C > inlinevoid SAL_CALL operator <<= ( Any & rAny, const C & value );
// additionally for C++ bool: template<> inlinevoid SAL_CALL operator <<= ( Any & rAny, boolconst & value );
/** Template binary >>= operator to assign a value from an any. Iftheanydoesnotcontainavaluethatcanbeassignedwithoutdataloss,thenthis operationwillfailreturningfalse.
@tparamCvaluetype @paramrAnysourceany(leftside) @paramvaluedestinationvalue(rightside) @returntrueifassignmentwaspossiblewithoutdataloss
*/ template< class C > inlinebool SAL_CALL operator >>= ( const Any & rAny, C & value );
/** Template equality operator: compares set value of left side any to right side value. Thevaluesneednotbeofequaltype,e.g.ashortintegeriscomparedtoalonginteger. Thisoperatorcanbeimplementedastemplatememberfunction,ifallsupportedcompilers cancopewithtemplatememberfunctions.
@tparamCvaluetype @paramrAnyanotherany(leftside) @paramvalueavalue(rightside) @returntrueifvaluesareequal,falseotherwise
*/ template< class C > inlinebool SAL_CALL operator == ( const Any & rAny, const C & value ); /** Template inequality operator: compares set value of left side any to right side value. Thevaluesneednotbeofequaltype,e.g.ashortintegeriscomparedtoalonginteger. Thisoperatorcanbeimplementedastemplatememberfunction,ifallsupportedcompilers cancopewithtemplatememberfunctions.
@tparamCvaluetype @paramrAnyanotherany(leftside) @paramvalueavalue(rightside) @returntrueifvaluesareunequal,falseotherwise
*/ template< class C > inlinebool SAL_CALL operator != ( const Any & rAny, const C & value );
// additional specialized >>= and == operators // bool template<> inlinebool SAL_CALL operator >>= ( const Any & rAny, sal_Bool & value ); template<> inlinebool SAL_CALL operator == ( const Any & rAny, const sal_Bool & value ); template<> inlinebool SAL_CALL operator >>= ( Any const & rAny, bool & value ); template<> inlinebool SAL_CALL operator == ( Any const & rAny, boolconst & value ); // byte template<> inlinebool SAL_CALL operator >>= ( const Any & rAny, sal_Int8 & value ); // short template<> inlinebool SAL_CALL operator >>= ( const Any & rAny, sal_Int16 & value ); template<> inlinebool SAL_CALL operator >>= ( const Any & rAny, sal_uInt16 & value ); // long template<> inlinebool SAL_CALL operator >>= ( const Any & rAny, sal_Int32 & value ); template<> inlinebool SAL_CALL operator >>= ( const Any & rAny, sal_uInt32 & value ); // hyper template<> inlinebool SAL_CALL operator >>= ( const Any & rAny, sal_Int64 & value ); template<> inlinebool SAL_CALL operator >>= ( const Any & rAny, sal_uInt64 & value ); // float template<> inlinebool SAL_CALL operator >>= ( const Any & rAny, float & value ); // double template<> inlinebool SAL_CALL operator >>= ( const Any & rAny, double & value ); // string template<> inlinebool SAL_CALL operator >>= ( const Any & rAny, ::rtl::OUString & value ); template<> inlinebool SAL_CALL operator == ( const Any & rAny, const ::rtl::OUString & value ); #ifdefined LIBO_INTERNAL_ONLY template<std::size_t N> inlinebool SAL_CALL operator == (const Any& rAny, const rtl::OUStringLiteral<N>& value); #endif // type template<> inlinebool SAL_CALL operator >>= ( const Any & rAny, Type & value ); template<> inlinebool SAL_CALL operator == ( const Any & rAny, const Type & value ); // any #if !defined LIBO_INTERNAL_ONLY template<> inlinebool SAL_CALL operator >>= ( const Any & rAny, Any & value ); #endif // interface template<> inlinebool SAL_CALL operator == ( const Any & rAny, const BaseReference & value );
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.