Type info
Title C++-UNO Any additions
Posted by [EMAIL PROTECTED]
Affected ...,
Effective from SRC680/m74


Summary

+ [public] template <typename T> explicit inline Any( T const & value );
+ [public] explicit inline Any( bool value );
+ [public] template <typename T> inline T get() const;
+ [public] template <typename T> inline bool has() const;
+ inline void SAL_CALL operator <<= ( Any & rAny, bool const & value ) SAL_THROW( () );

disallowing use of ambiguous C++-UNO types (sal_Unicode vs. sal_uInt16):
+ [private, undefined] explicit Any( sal_uInt16 );
+ [private, undefined] template <> sal_uInt16 get<sal_uInt16>() const;
+ [private, undefined] template <> bool has<sal_uInt16>() const;


Description
FIRST, I have added a templated ctor to class com::sun::star::uno::Any:

template <typename T>
explicit inline Any( T const & value );

and support for C++ bool:
explicit inline Any( bool value );

to be used instead of makeAny(), e.g.

Any foo(myString);
Any bar(false);

SECOND, I have added the following template member functions to class
com::sun::star::uno::Any:

template <typename T>
inline T get() const;

provides a value of the specified type, so you can easily write e.g.

sal_Int32 myVal = myAny.get<sal_Int32>();

Widening conversion without data loss is taken into account, objects
will be queried for interface if necessary.
A com::sun::star::uno::RuntimeException is thrown if the specified
type cannot be provided. [This function is only available if code is
compiled with exception support.]

template <typename T>
inline bool has() const;

tests whether the Any can provide a value of specified type. Widening
conversion without data loss is taken into account, objects will be
queried for interface if necessary, e.g.

if (myAny.has<sal_Int16>()) ...

THIRD, I have added support for C++ bool to set an Any's value, which
has been missing:

inline void SAL_CALL operator <<= ( Any & rAny, bool const & value )
SAL_THROW( () );

FINALLY, all new template members cannot be used with ambiguous
C++-UNO types sal_Unicode resp. sal_uInt16. This will result either in
a compilation or link error (depends on the compiler).


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to