blob: a0a1c99cbbf917c5803d95359623a48b94ef89eb [file] [log] [blame]
#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