42 #ifndef GOOGLE_PROTOBUF_UTIL_MESSAGE_DIFFERENCER_H__ 43 #define GOOGLE_PROTOBUF_UTIL_MESSAGE_DIFFERENCER_H__ 57 class DynamicMessageFactory;
61 class ZeroCopyOutputStream;
118 static bool Equals(
const Message& message1,
const Message& message2);
130 static bool Equivalent(
const Message& message1,
const Message& message2);
142 static bool ApproximatelyEquals(
const Message& message1,
157 static bool ApproximatelyEquivalent(
const Message& message1,
198 unknown_field_number(-1),
201 unknown_field_set1(
NULL),
202 unknown_field_set2(
NULL),
203 unknown_field_index1(-1),
204 unknown_field_index2(-1) {}
222 virtual void ReportAdded(
224 const vector<SpecificField>& field_path) = 0;
227 virtual void ReportDeleted(
230 const vector<SpecificField>& field_path) = 0;
233 virtual void ReportModified(
236 const vector<SpecificField>& field_path) = 0;
246 const vector<SpecificField>& field_path) { }
255 const vector<SpecificField>& field_path) { }
279 const vector<SpecificField>& field_path) { }
286 const vector<SpecificField>& field_path) {}
301 const vector<SpecificField>& parent_fields)
const {
322 virtual bool IsIgnored(
326 const vector<SpecificField>& parent_fields) = 0;
334 const vector<SpecificField>& parent_fields) {
441 void TreatAsMapWithMultipleFieldsAsKey(
443 const vector<const FieldDescriptor*>& key_fields);
457 void TreatAsMapWithMultipleFieldPathsAsKey(
459 const vector<vector<const FieldDescriptor*> >& key_field_paths);
468 void TreatAsMapUsingKeyComparator(
517 report_matches_ = report_matches;
523 void set_scope(
Scope scope);
552 bool CompareWithFields(
const Message& message1,
const Message& message2,
553 const vector<const FieldDescriptor*>& message1_fields,
554 const vector<const FieldDescriptor*>& message2_fields);
559 void ReportDifferencesToString(
string*
output);
567 void ReportDifferencesTo(
Reporter* reporter);
583 report_modified_aggregates_ = report;
587 virtual void ReportAdded(
const Message& message1,
const Message& message2,
588 const vector<SpecificField>& field_path);
590 virtual void ReportDeleted(
const Message& message1,
592 const vector<SpecificField>& field_path);
594 virtual void ReportModified(
const Message& message1,
596 const vector<SpecificField>& field_path);
598 virtual void ReportMoved(
const Message& message1,
600 const vector<SpecificField>& field_path);
602 virtual void ReportMatched(
const Message& message1,
604 const vector<SpecificField>& field_path);
606 virtual void ReportIgnored(
const Message& message1,
608 const vector<SpecificField>& field_path);
610 virtual void ReportUnknownFieldIgnored(
612 const vector<SpecificField>& field_path);
616 virtual void PrintPath(
const vector<SpecificField>& field_path,
625 const vector<SpecificField>& field_path,
629 virtual void PrintUnknownFieldValue(
const UnknownField* unknown_field);
632 void Print(
const string&
str);
636 bool delete_printer_;
637 bool report_modified_aggregates_;
656 void CombineFields(
const vector<const FieldDescriptor*>& fields1,
658 const vector<const FieldDescriptor*>& fields2,
660 vector<const FieldDescriptor*>* combined_fields);
668 vector<SpecificField>* parent_fields);
671 bool CompareUnknownFields(
const Message& message1,
const Message& message2,
674 vector<SpecificField>* parent_fields);
679 bool CompareRequestedFieldsUsingSettings(
681 const vector<const FieldDescriptor*>& message1_fields,
682 const vector<const FieldDescriptor*>& message2_fields,
683 vector<SpecificField>* parent_fields);
686 bool CompareWithFieldsInternal(
688 const vector<const FieldDescriptor*>& message1_fields,
689 const vector<const FieldDescriptor*>& message2_fields,
690 vector<SpecificField>* parent_fields);
693 bool CompareRepeatedField(
const Message& message1,
const Message& message2,
695 vector<SpecificField>* parent_fields);
698 bool CompareFieldValue(
const Message& message1,
713 bool CompareFieldValueUsingParentFields(
const Message& message1,
718 vector<SpecificField>* parent_fields);
733 const vector<SpecificField>& parent_fields,
734 int index1,
int index2);
751 const vector<SpecificField>& parent_fields);
755 bool IsUnknownFieldIgnored(
const Message& message1,
const Message& message2,
757 const vector<SpecificField>& parent_fields);
770 bool MatchRepeatedFieldIndices(
const Message& message1,
773 const vector<SpecificField>& parent_fields,
774 vector<int>* match_list1,
775 vector<int>* match_list2);
782 static bool CheckPathChanged(
const vector<SpecificField>& parent_fields);
800 FieldSet set_fields_;
801 FieldSet list_fields_;
808 vector<MapKeyComparator*> owned_key_comparators_;
809 FieldKeyComparatorMap map_field_key_comparator_;
810 vector<IgnoreCriteria*> ignore_criteria_;
812 FieldSet ignored_fields_;
814 bool compare_unknown_fields_;
815 bool report_matches_;
817 string* output_string_;
828 vector<MessageDifferencer::SpecificField>* parent_fields)
829 : parent_fields_(parent_fields) {}
832 return parent_fields_;
836 vector<MessageDifferencer::SpecificField>* parent_fields_;
843 #endif // GOOGLE_PROTOBUF_UTIL_MESSAGE_DIFFERENCER_H__ const FieldDescriptor * field
Definition: message_differencer.h:166
virtual void ReportMatched(const Message &message1, const Message &message2, const vector< SpecificField > &field_path)
Definition: message_differencer.h:252
Definition: message.h:179
Definition: message_differencer.cc:71
Definition: printer.h:164
RepeatedFieldComparison
Definition: message_differencer.h:368
const FieldDescriptor * field
Definition: parser_unittest.cc:2279
int unknown_field_index2
Definition: message_differencer.h:194
virtual void ReportIgnored(const Message &message1, const Message &message2, const vector< SpecificField > &field_path)
Definition: message_differencer.h:276
hold on if any(s.optbuf~=0) peak_ix
Definition: field_comparator.h:56
Definition: message_differencer.h:316
int unknown_field_index1
Definition: message_differencer.h:193
SpecificField()
Definition: message_differencer.h:196
#define GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(TypeName)
Definition: macros.h:40
typename detail::make_map< Ts... >::type map
Definition: Brigand.h:223
Type
Definition: unknown_field_set.h:170
Scope
Definition: message_differencer.h:354
vector< MessageDifferencer::SpecificField > * parent_fields() const
Definition: message_differencer.h:831
int index
Definition: message_differencer.h:173
void set_report_matches(bool report_matches)
Definition: message_differencer.h:516
Definition: message_differencer.h:294
Definition: message_differencer.h:216
FloatComparison
Definition: message_differencer.h:362
virtual bool IsUnknownFieldIgnored(const Message &message1, const Message &message2, const SpecificField &field, const vector< SpecificField > &parent_fields)
Definition: message_differencer.h:331
Definition: descriptor.h:439
Definition: protobuf.h:85
Definition: message_differencer.h:374
Definition: zero_copy_stream.h:181
const UnknownFieldSet * unknown_field_set1
Definition: message_differencer.h:187
int unknown_field_number
Definition: message_differencer.h:167
ComparisonResult
Definition: field_comparator.h:61
Definition: unknown_field_set.h:168
void set_report_modified_aggregates(bool report)
Definition: message_differencer.h:582
MessageFieldComparison
Definition: message_differencer.h:345
int new_index
Definition: message_differencer.h:181
comparator
Definition: UpdateContents.py:41
Definition: __init__.py:1
FieldContext(vector< MessageDifferencer::SpecificField > *parent_fields)
Definition: message_differencer.h:827
Definition: message_differencer.h:825
EGLSetBlobFuncANDROID set
Definition: eglext.h:426
Definition: unknown_field_set.h:75
Definition: scoped_ptr.h:48
EGLStreamKHR EGLint EGLint EGLint const void * data
Definition: eglext.h:984
str
Definition: make-dist.py:305
Definition: message_differencer.h:363
Definition: message_differencer.h:369
UnknownField::Type unknown_field_type
Definition: message_differencer.h:168
Definition: message_differencer.h:348
#define GOOGLE_CHECK(EXPRESSION)
Definition: logging.h:151
#define NULL
Definition: common_types.h:41
#define LIBPROTOBUF_EXPORT
Definition: port.h:97
Definition: message_differencer.h:108
virtual void ReportUnknownFieldIgnored(const Message &message1, const Message &message2, const vector< SpecificField > &field_path)
Definition: message_differencer.h:284
virtual void ReportMoved(const Message &message1, const Message &message2, const vector< SpecificField > &field_path)
Definition: message_differencer.h:243
Definition: gflags_completions.h:115
Definition: field_comparator.h:97
Definition: message_differencer.h:355
CFArrayRef CFTypeRef key
Definition: AVFoundationCFSoftLinking.h:129
GLuint GLsizei const GLchar * message
Definition: gl2ext.h:137
Definition: message_differencer.h:346
virtual bool IsMatch(const Message &message1, const Message &message2, const vector< SpecificField > &parent_fields) const
Definition: message_differencer.h:299
Definition: message_differencer.h:162
Definition: message_differencer.h:573
const UnknownFieldSet * unknown_field_set2
Definition: message_differencer.h:188