You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@qpid.apache.org by Toralf Lund <to...@pgs.com> on 2015/07/29 12:50:53 UTC

Variant type conversions (C++ API)...

Hi,

I have construct of the form

value=message.getProperties()["property"];

The expected property type is uint32. The value type has up until now 
been "unsigned int", so (obviously) the call has worked just fine. But 
then I changed it to a double (because I want to use it as a 
floating-point later), and it will no longer work - get and " 
InvalidConversion" exception with the message "Cannot convert from 
uint32 to double (qpid/types/Variant.cpp:488)". This rather surprised 
me; I can easily work around this, but why isn't an integer variant 
convertible to a floating-point value?

Also, when doing some more tests, I realised that I also get an 
exception when the property is missing. This was also not quite what I 
expected, either - based on experience with "variant" types in other 
libraries, I assumed that an "empty" variant would be convertible to 
most types - giving a 0 or default-constructed value. Comments?

QPid version is 0.22.

- Toralf


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
For additional commands, e-mail: users-help@qpid.apache.org


Re: Variant type conversions (C++ API)...

Posted by Gordon Sim <gs...@redhat.com>.
On 07/29/2015 11:50 AM, Toralf Lund wrote:
> I have construct of the form
>
> value=message.getProperties()["property"];
>
> The expected property type is uint32. The value type has up until now
> been "unsigned int", so (obviously) the call has worked just fine. But
> then I changed it to a double (because I want to use it as a
> floating-point later), and it will no longer work - get and "
> InvalidConversion" exception with the message "Cannot convert from
> uint32 to double (qpid/types/Variant.cpp:488)". This rather surprised
> me; I can easily work around this, but why isn't an integer variant
> convertible to a floating-point value?

I agree, there is no obvious reason why that should not work. If you 
want to raise a JIRA I can take a look at getting a fix in.

> Also, when doing some more tests, I realised that I also get an
> exception when the property is missing. This was also not quite what I
> expected, either - based on experience with "variant" types in other
> libraries, I assumed that an "empty" variant would be convertible to
> most types - giving a 0 or default-constructed value. Comments?

This one for me is less clear. Treating null as 0 doesn't feel entirely 
right to me. At present you can convert a null (i.e. a void) into a 
string (the empty string) or a bool (false) but not into any of the 
numeric values. whether this is consistent and whether it should be 
changed is I suspect subject to different points of view. If there was a 
consensus on the list that a change of some form was needed I'd be happy 
to accept that of course.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
For additional commands, e-mail: users-help@qpid.apache.org