Chromium Code Reviews| Index: dbus/message.cc |
| diff --git a/dbus/message.cc b/dbus/message.cc |
| index 8a58dbaa3bf955c9f7ba9e1924437be577cd2038..7f51cf2bd680290f5f88084fadac66c08f01c4e3 100644 |
| --- a/dbus/message.cc |
| +++ b/dbus/message.cc |
| @@ -599,6 +599,19 @@ void MessageWriter::AppendArrayOfBytes(const uint8_t* values, size_t length) { |
| CloseContainer(&array_writer); |
| } |
| +void MessageWriter::AppendArrayOfDoubles(const double* values, size_t length) { |
| + DCHECK(!container_is_open_); |
| + MessageWriter array_writer(message_); |
| + OpenArray("d", &array_writer); |
| + const bool success = dbus_message_iter_append_fixed_array( |
| + &(array_writer.raw_message_iter_), |
| + DBUS_TYPE_DOUBLE, |
| + &values, |
| + static_cast<int>(length)); |
| + CHECK(success) << "Unable to allocate memory"; |
| + CloseContainer(&array_writer); |
| +} |
| + |
| void MessageWriter::AppendArrayOfStrings( |
| const std::vector<std::string>& strings) { |
| DCHECK(!container_is_open_); |
| @@ -826,6 +839,25 @@ bool MessageReader::PopArrayOfBytes(const uint8_t** bytes, size_t* length) { |
| return true; |
| } |
| +bool MessageReader::PopArrayOfDoubles(const double** doubles, size_t* length) { |
| + MessageReader array_reader(message_); |
| + if (!PopArray(&array_reader)) |
| + return false; |
| + if (!array_reader.HasMoreData()) { |
| + *length = 0; |
| + *doubles = NULL; |
|
stevenjb
2016/03/29 01:05:19
nullptr
|
| + return true; |
| + } |
| + if (!array_reader.CheckDataType(DBUS_TYPE_DOUBLE)) |
| + return false; |
| + int int_length = 0; |
| + dbus_message_iter_get_fixed_array(&array_reader.raw_message_iter_, |
| + doubles, |
| + &int_length); |
| + *length = static_cast<int>(int_length); |
| + return true; |
| +} |
| + |
| bool MessageReader::PopArrayOfStrings( |
| std::vector<std::string> *strings) { |
| strings->clear(); |