#define ADD_DATA \
for (PRUint32 i = start; i < count; i++) \
dbus_message_iter_append_basic(aIter, aDBusType, data+i)
+#define ADD_DATA_AS_DOUBLE do { \
+ for (PRUint32 i = start; i < count; i++) { \
+ double t = *(data+i); \
+ dbus_message_iter_append_basic(aIter, aDBusType, &t); \
+ } } while (0)
case nsIDataType::VTYPE_BOOL:
{
PRBool *data = (PRBool *)data_ptr;
case nsIDataType::VTYPE_UINT8:
{
char *data = (char *)data_ptr;
- ADD_DATA;
+ if (aDBusType == DBUS_TYPE_DOUBLE)
+ ADD_DATA_AS_DOUBLE;
+ else
+ ADD_DATA;
break;
}
case nsIDataType::VTYPE_INT16:
case nsIDataType::VTYPE_UINT16:
{
PRInt16 *data = (PRInt16 *)data_ptr;
- ADD_DATA;
+ if (aDBusType == DBUS_TYPE_DOUBLE)
+ ADD_DATA_AS_DOUBLE;
+ else
+ ADD_DATA;
break;
}
case nsIDataType::VTYPE_INT32:
case nsIDataType::VTYPE_UINT32:
{
PRInt32 *data = (PRInt32 *)data_ptr;
- ADD_DATA;
+ if (aDBusType == DBUS_TYPE_DOUBLE)
+ ADD_DATA_AS_DOUBLE;
+ else
+ ADD_DATA;
break;
}
case nsIDataType::VTYPE_INT64:
case nsIDataType::VTYPE_UINT64:
{
PRInt64 *data = (PRInt64 *)data_ptr;
- ADD_DATA;
+ if (aDBusType == DBUS_TYPE_DOUBLE)
+ ADD_DATA_AS_DOUBLE;
+ else
+ ADD_DATA;
break;
}
case nsIDataType::VTYPE_DOUBLE: