12
12
#include <cstdint>
13
13
#include <cstdio>
14
14
#include <cstdlib>
15
+
#include <iterator>
15
16
#include <limits>
16
17
#include <map>
17
18
#include <string>
@@ -528,20 +529,6 @@ void GenerateMapGetters(upb::FieldDefPtr field, const DefPoolPair& pools,
528
529
MapValueSize(field, MapValueCType(field)));
529
530
}
530
531
531
-
void GenerateMapEntryGetters(upb::FieldDefPtr field, absl::string_view msg_name,
532
-
Output& output) {
533
-
output(
534
-
R"cc(
535
-
UPB_INLINE $0 $1_$2(const $1* msg) {
536
-
$3 ret;
537
-
_upb_msg_map_$2(msg, &ret, $4);
538
-
return ret;
539
-
}
540
-
)cc",
541
-
CTypeConst(field), msg_name, field.name(), CType(field),
542
-
field.ctype() == kUpb_CType_String ? "0" : "sizeof(ret)");
543
-
}
544
-
545
532
void GenerateRepeatedGetters(upb::FieldDefPtr field, const DefPoolPair& pools,
546
533
absl::string_view msg_name,
547
534
const NameMangler& mangler, const Options& options,
@@ -629,8 +616,6 @@ void GenerateGetters(upb::FieldDefPtr field, const DefPoolPair& pools,
629
616
const Options& options, Output& output) {
630
617
if (field.IsMap()) {
631
618
GenerateMapGetters(field, pools, msg_name, mangler, options, output);
632
-
} else if (field.containing_type().mapentry()) {
633
-
GenerateMapEntryGetters(field, msg_name, output);
634
619
} else if (field.IsSequence()) {
635
620
GenerateRepeatedGetters(field, pools, msg_name, mangler, options, output);
636
621
} else {
@@ -756,36 +741,20 @@ void GenerateNonRepeatedSetters(upb::FieldDefPtr field,
756
741
absl::string_view msg_name,
757
742
const NameMangler& mangler,
758
743
const Options& options, Output& output) {
759
-
if (field == field.containing_type().map_key()) {
760
-
// Key cannot be mutated.
761
-
return;
762
-
}
763
-
764
744
std::string field_name = mangler.ResolveFieldName(field.name());
765
745
766
-
if (field == field.containing_type().map_value()) {
767
-
output(R"cc(
768
-
UPB_INLINE void $0_set_$1($0 *msg, $2 value) {
769
-
_upb_msg_map_set_value(msg, &value, $3);
770
-
}
771
-
)cc",
772
-
msg_name, field_name, CType(field),
773
-
field.ctype() == kUpb_CType_String ? "0"
774
-
: "sizeof(" + CType(field) + ")");
775
-
} else {
776
-
output(R"cc(
777
-
UPB_INLINE void $0_set_$1($0 *msg, $2 value) {
778
-
const upb_MiniTableField field = $3;
779
-
upb_Message_SetBaseField((upb_Message *)msg, &field, &value);
780
-
}
781
-
)cc",
782
-
msg_name, field_name, CType(field),
783
-
FieldInitializerStrong(pools, field, options));
784
-
}
746
+
output(R"cc(
747
+
UPB_INLINE void $0_set_$1($0 *msg, $2 value) {
748
+
const upb_MiniTableField field = $3;
749
+
upb_Message_SetBaseField((upb_Message *)msg, &field, &value);
750
+
}
751
+
)cc",
752
+
msg_name, field_name, CType(field),
753
+
FieldInitializerStrong(pools, field, options));
785
754
786
755
// Message fields also have a Msg_mutable_foo() accessor that will create
787
756
// the sub-message if it doesn't already exist.
788
-
if (field.IsSubMessage() && !field.containing_type().mapentry()) {
757
+
if (field.IsSubMessage()) {
789
758
output(
790
759
R"cc(
791
760
UPB_INLINE struct $0* $1_mutable_$2($1* msg, upb_Arena* arena) {
@@ -820,9 +789,7 @@ void GenerateMessageInHeader(upb::MessageDefPtr message,
820
789
Output& output) {
821
790
output("/* $0 */\n\n", message.full_name());
822
791
std::string msg_name = MessageType(message);
823
-
if (!message.mapentry()) {
824
-
GenerateMessageFunctionsInHeader(message, options, output);
825
-
}
792
+
GenerateMessageFunctionsInHeader(message, options, output);
826
793
827
794
for (int i = 0; i < message.real_oneof_count(); i++) {
828
795
GenerateOneofInHeader(message.oneof(i), pools, msg_name, options, output);
@@ -874,8 +841,15 @@ std::vector<upb::MessageDefPtr> SortedForwardMessages(
874
841
875
842
void WriteHeader(const DefPoolPair& pools, upb::FileDefPtr file,
876
843
const Options& options, Output& output) {
877
-
const std::vector<upb::MessageDefPtr> this_file_messages =
878
-
SortedMessages(file);
844
+
const std::vector<upb::MessageDefPtr> sorted_messages = SortedMessages(file);
845
+
846
+
// Filter out map entries.
847
+
std::vector<upb::MessageDefPtr> this_file_messages;
848
+
std::copy_if(
849
+
sorted_messages.begin(), sorted_messages.end(),
850
+
std::back_inserter(this_file_messages),
851
+
[](const upb::MessageDefPtr& message) { return !message.mapentry(); });
852
+
879
853
const std::vector<upb::FieldDefPtr> this_file_exts = SortedExtensions(file);
880
854
std::vector<upb::EnumDefPtr> this_file_enums = SortedEnums(file, kAllEnums);
881
855
std::vector<upb::MessageDefPtr> forward_messages =
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4