PiperOrigin-RevId: 658397591pull/17656/head
parent
c75787c327
commit
582e80eb8a
4 changed files with 55 additions and 0 deletions
@ -0,0 +1,26 @@ |
||||
#include "rust/cpp_kernel/compare.h" |
||||
|
||||
#include <string> |
||||
|
||||
#include "google/protobuf/io/zero_copy_stream_impl_lite.h" |
||||
#include "google/protobuf/message_lite.h" |
||||
|
||||
static std::string SerializeDeterministically(const google::protobuf::MessageLite& m) { |
||||
std::string serialized; |
||||
{ |
||||
google::protobuf::io::StringOutputStream output_stream(&serialized); |
||||
google::protobuf::io::CodedOutputStream coded_stream(&output_stream); |
||||
coded_stream.SetSerializationDeterministic(true); |
||||
m.SerializePartialToCodedStream(&coded_stream); |
||||
} |
||||
return serialized; |
||||
} |
||||
|
||||
extern "C" { |
||||
|
||||
bool proto2_rust_messagelite_equals(const google::protobuf::MessageLite* msg1, |
||||
const google::protobuf::MessageLite* msg2) { |
||||
return SerializeDeterministically(*msg1) == SerializeDeterministically(*msg2); |
||||
} |
||||
|
||||
} // extern "C"
|
@ -0,0 +1,13 @@ |
||||
#ifndef GOOGLE_PROTOBUF_RUST_CPP_KERNEL_COMPARE_H__ |
||||
#define GOOGLE_PROTOBUF_RUST_CPP_KERNEL_COMPARE_H__ |
||||
|
||||
#include "google/protobuf/message_lite.h" |
||||
|
||||
extern "C" { |
||||
|
||||
bool proto2_rust_messagelite_equals(const google::protobuf::MessageLite* msg1, |
||||
const google::protobuf::MessageLite* msg2); |
||||
|
||||
} // extern "C"
|
||||
|
||||
#endif // GOOGLE_PROTOBUF_RUST_CPP_KERNEL_COMPARE_H__
|
Loading…
Reference in new issue