| #include "google/protobuf/internal_feature_helper.h" |
| |
| #include <string> |
| |
| #include "absl/log/absl_check.h" |
| #include "absl/strings/escaping.h" |
| #include "absl/strings/string_view.h" |
| #include "google/protobuf/descriptor.h" |
| #include "google/protobuf/descriptor.pb.h" |
| #include "google/protobuf/extension_set.h" |
| #include "google/protobuf/feature_resolver.h" |
| |
| namespace google { |
| namespace protobuf { |
| namespace internal { |
| FeatureSet InternalFeatureHelper::ParseAndGetEditionResolvedFeatureSet( |
| absl::string_view data, Edition edition) { |
| FeatureSetDefaults defaults; |
| std::string unescaped_data; |
| absl::Base64Unescape(data, &unescaped_data); |
| ABSL_CHECK(defaults.ParseFromString(unescaped_data)); |
| auto edition_feature_set = GetEditionFeatureSetDefaults(edition, defaults); |
| ABSL_CHECK_OK(edition_feature_set); |
| return *edition_feature_set; |
| } |
| } // namespace internal |
| } // namespace protobuf |
| } // namespace google |