Skip to content

Commit

Permalink
fix message ordering
Browse files Browse the repository at this point in the history
  • Loading branch information
huangminghuang committed Sep 20, 2024
1 parent d582a38 commit 8c3a906
Showing 1 changed file with 21 additions and 7 deletions.
28 changes: 21 additions & 7 deletions protoc-plugin/hpp_gen.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -483,6 +483,13 @@ struct hpp_addons {
}
void add_oneof(OneofD &o) { oneofs.push_back(&o); }
void add_extension(FieldD &f) { extensions.push_back(&f); }

void set_file_parent(void *parent) {
file_parent = parent;
for (auto *submsg : messages) {
submsg->set_file_parent(parent);
}
}
};

template <typename FileD, typename MessageD, typename EnumD, typename FieldD>
Expand All @@ -508,7 +515,7 @@ struct hpp_addons {
}
void add_enum(EnumD &e) { enums.push_back(&e); }
void add_message(MessageD &m) {
m.file_parent = this;
m.set_file_parent(this);
messages.push_back(&m);
}
void add_extension(FieldD &f) { extensions.push_back(&f); }
Expand Down Expand Up @@ -731,14 +738,21 @@ struct msg_code_generator : code_generator {
}
}

auto itr = pool.message_map.find(dependent);
if (itr != pool.message_map.end()) {
itr->second->dependencies.insert(qualified_cpp_name(dependee));
auto find = [](const auto &m, const std::string &key) {
auto itr = m.find(key);
return (itr == m.end()) ? nullptr : itr->second;
};

auto *dependent_msg = find(pool.message_map, dependent);
auto *dependee_msg = find(pool.message_map, type_name);

if (dependent_msg != nullptr &&
(dependee_msg == nullptr || dependent_msg->file_parent == dependee_msg->file_parent)) {
dependent_msg->dependencies.insert(qualified_cpp_name(dependee));
}

itr = pool.message_map.find(type_name);
if (itr != pool.message_map.end()) {
itr->second->used_by_fields.insert(&field);
if (dependee_msg != nullptr) {
dependee_msg->used_by_fields.insert(&field);
}

if (type == TYPE_ENUM && field.proto.label == gpb::FieldDescriptorProto::Label::LABEL_OPTIONAL &&
Expand Down

0 comments on commit 8c3a906

Please sign in to comment.