| 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]
