OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "dbus/property.h" | 5 #include "dbus/property.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <memory> | |
10 | |
9 #include "base/bind.h" | 11 #include "base/bind.h" |
10 #include "base/logging.h" | 12 #include "base/logging.h" |
11 | 13 |
12 #include "dbus/message.h" | 14 #include "dbus/message.h" |
13 #include "dbus/object_path.h" | 15 #include "dbus/object_path.h" |
14 #include "dbus/object_proxy.h" | 16 #include "dbus/object_proxy.h" |
15 | 17 |
16 namespace dbus { | 18 namespace dbus { |
17 | 19 |
18 // | 20 // |
(...skipping 633 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
652 array_writer.OpenStruct(&struct_writer); | 654 array_writer.OpenStruct(&struct_writer); |
653 struct_writer.AppendArrayOfBytes(std::get<0>(pair).data(), | 655 struct_writer.AppendArrayOfBytes(std::get<0>(pair).data(), |
654 std::get<0>(pair).size()); | 656 std::get<0>(pair).size()); |
655 struct_writer.AppendUint16(std::get<1>(pair)); | 657 struct_writer.AppendUint16(std::get<1>(pair)); |
656 array_writer.CloseContainer(&struct_writer); | 658 array_writer.CloseContainer(&struct_writer); |
657 } | 659 } |
658 variant_writer.CloseContainer(&array_writer); | 660 variant_writer.CloseContainer(&array_writer); |
659 writer->CloseContainer(&variant_writer); | 661 writer->CloseContainer(&variant_writer); |
660 } | 662 } |
661 | 663 |
664 // | |
665 // Property<std::map<std::string, std::vector<uint8_t>>> | |
666 // specialization. | |
667 // | |
668 | |
669 template <> | |
670 bool Property<std::map<std::string, std::vector<uint8_t>>>::PopValueFromReader( | |
671 MessageReader* reader) { | |
672 MessageReader variant_reader(NULL); | |
hashimoto
2016/09/28 04:22:56
Please use nullptr instead of NULL.
The same goes
puthik_chromium
2016/10/05 00:11:33
Done.
I saw the existing code above use NULL and I
| |
673 MessageReader dict_reader(NULL); | |
674 if (!reader->PopVariant(&variant_reader) || | |
675 !variant_reader.PopArray(&dict_reader)) | |
676 return false; | |
677 | |
678 value_.clear(); | |
679 while (dict_reader.HasMoreData()) { | |
680 MessageReader entry_reader(NULL); | |
681 if (!dict_reader.PopDictEntry(&entry_reader)) | |
682 return false; | |
683 | |
684 std::string key; | |
685 MessageReader value_varient_reader(NULL); | |
686 if (!entry_reader.PopString(&key) || | |
687 !entry_reader.PopVariant(&value_varient_reader)) | |
688 return false; | |
689 | |
690 const uint8_t* bytes = NULL; | |
691 size_t length = 0; | |
692 if (!value_varient_reader.PopArrayOfBytes(&bytes, &length)) | |
693 return false; | |
694 | |
695 value_[key].assign(bytes, bytes + length); | |
696 } | |
697 return true; | |
698 } | |
699 | |
700 template <> | |
701 void Property<std::map<std::string, std::vector<uint8_t>>>:: | |
702 AppendSetValueToWriter(MessageWriter* writer) { | |
703 MessageWriter variant_writer(NULL); | |
704 MessageWriter dict_writer(NULL); | |
705 | |
706 writer->OpenVariant("a{sv}", &variant_writer); | |
707 variant_writer.OpenArray("{sv}", &dict_writer); | |
708 | |
709 for (const auto& pair : set_value_) { | |
710 MessageWriter entry_writer(NULL); | |
711 dict_writer.OpenDictEntry(&entry_writer); | |
712 | |
713 entry_writer.AppendString(pair.first); | |
714 | |
715 MessageWriter value_varient_writer(NULL); | |
716 entry_writer.OpenVariant("ay", &value_varient_writer); | |
717 value_varient_writer.AppendArrayOfBytes(pair.second.data(), | |
718 pair.second.size()); | |
719 entry_writer.CloseContainer(&value_varient_writer); | |
720 | |
721 dict_writer.CloseContainer(&entry_writer); | |
722 } | |
723 | |
724 variant_writer.CloseContainer(&dict_writer); | |
725 writer->CloseContainer(&variant_writer); | |
726 } | |
727 | |
662 template class Property<uint8_t>; | 728 template class Property<uint8_t>; |
663 template class Property<bool>; | 729 template class Property<bool>; |
664 template class Property<int16_t>; | 730 template class Property<int16_t>; |
665 template class Property<uint16_t>; | 731 template class Property<uint16_t>; |
666 template class Property<int32_t>; | 732 template class Property<int32_t>; |
667 template class Property<uint32_t>; | 733 template class Property<uint32_t>; |
668 template class Property<int64_t>; | 734 template class Property<int64_t>; |
669 template class Property<uint64_t>; | 735 template class Property<uint64_t>; |
670 template class Property<double>; | 736 template class Property<double>; |
671 template class Property<std::string>; | 737 template class Property<std::string>; |
672 template class Property<ObjectPath>; | 738 template class Property<ObjectPath>; |
673 template class Property<std::vector<std::string> >; | 739 template class Property<std::vector<std::string> >; |
674 template class Property<std::vector<ObjectPath> >; | 740 template class Property<std::vector<ObjectPath> >; |
675 template class Property<std::vector<uint8_t>>; | 741 template class Property<std::vector<uint8_t>>; |
676 template class Property<std::map<std::string, std::string>>; | 742 template class Property<std::map<std::string, std::string>>; |
677 template class Property<std::vector<std::pair<std::vector<uint8_t>, uint16_t>>>; | 743 template class Property<std::vector<std::pair<std::vector<uint8_t>, uint16_t>>>; |
744 template class Property<std::map<std::string, std::vector<uint8_t>>>; | |
678 | 745 |
679 } // namespace dbus | 746 } // namespace dbus |
OLD | NEW |