ADTF
ddcompare.h
Go to the documentation of this file.
1 
14 #ifndef DDCOMPARE_H_INCLUDED
15 #define DDCOMPARE_H_INCLUDED
16 
17 #include <a_util/result.h>
18 #include <ddl/dd/dd.h>
20 
21 namespace ddl {
25 class DDCompare {
26 public:
31  dcf_data_types = 0x01,
32  dcf_units = 0x02,
33  dcf_enums = 0x04,
34  dcf_structs = 0x08,
35  dcf_streams = 0x10,
36  dcf_base_units = 0x20,
37  dcf_prefixes = 0x40,
39  dcf_all = 0xFF,
40  dcf_subset = 0x0100,
41  dcf_versions = 0x0200,
42  dcf_comments = 0x0400,
43  dcf_descriptions = 0x0800,
44  dcf_header = 0x1000,
46  0x2000,
49  0x020000,
51  0x040000,
52 
53  dcf_everything = 0xFFFF
54  };
55 
60  icf_none = 0x00,
61  icf_memory = 0x01,
62  icf_serialized = 0x02,
63  icf_names =
64  0x04,
65  icf_versions =
66  0x08,
67  icf_units = 0x10,
68  icf_comments = 0x20,
70  icf_subset = 0x80,
72  0x0100,
75  0x0400,
77  0x1FF
78  };
79 
80 public:
102  static a_util::result::Result isBinaryEqual(const std::string& type1,
103  const std::string& desc1,
104  const std::string& type2,
105  const std::string& desc2,
106  bool is_subset = true);
107 
132  static a_util::result::Result isBinaryEqual(const std::string& type1,
133  const std::string& desc1,
135  const std::string& type2,
136  const std::string& desc2,
138  bool is_subset = true);
139 
161  static a_util::result::Result isBinaryEqual(const std::string& type1,
162  const dd::DataDefinition& desc1,
163  const std::string& type2,
164  const dd::DataDefinition& desc2,
165  bool is_subset = true);
166 
191  static a_util::result::Result isBinaryEqual(const std::string& type1,
192  const dd::DataDefinition& desc1,
194  const std::string& type2,
195  const dd::DataDefinition& desc2,
197  bool is_subset = true);
198 
199  // main ddl entities comparisons
200 
212  static a_util::result::Result isEqualPrefix(const std::string& prefix1,
213  const std::string& desc1,
214  const std::string& prefix2,
215  const std::string& desc2,
216  uint32_t flags = icf_none);
217 
228  const dd::UnitPrefix& prefix2,
229  uint32_t flags = icf_none);
230 
242  static a_util::result::Result isEqualUnit(const std::string& unit1,
243  const std::string& desc1,
244  const std::string& unit2,
245  const std::string& desc2,
246  uint32_t flags = icf_none);
247 
260  const dd::DataDefinition& source_dd_of_unit1,
261  const dd::Unit& unit2,
262  const dd::DataDefinition& source_dd_of_unit2,
263  uint32_t flags = icf_none);
264 
274  static a_util::result::Result isEqual(const dd::BaseUnit& base_unit1,
275  const dd::BaseUnit& base_unit2,
276  uint32_t flags = icf_none);
277 
290  static a_util::result::Result isEqualType(const std::string& type1,
291  const std::string& desc1,
292  const std::string& type2,
293  const std::string& desc2,
294  uint32_t flags = icf_memory);
295 
307  const dd::DataType& type2,
308  uint32_t flags = icf_memory);
309 
325  const dd::DataDefinition& source_dd_of_enum1,
326  const dd::EnumType& enum2,
327  const dd::DataDefinition& source_dd_of_enum2,
328  uint32_t flags = icf_memory);
329 
345  const dd::DataDefinition& source_dd_of_type1,
346  const dd::StructType& type2,
347  const dd::DataDefinition& source_dd_of_type2,
348  uint32_t flags = icf_memory);
349 
361  static a_util::result::Result isEqualStream(const std::string& stream1,
362  const std::string& desc1,
363  const std::string& stream2,
364  const std::string& desc2,
365  uint32_t flags = icf_memory);
366 
381  const dd::DataDefinition& source_dd_of_stream1,
382  const dd::Stream& stream2,
383  const dd::DataDefinition& source_dd_of_stream2,
384  uint32_t flags = icf_memory);
385 
399  static a_util::result::Result isEqual(const dd::StreamMetaType& stream_meta_type1,
400  const dd::DataDefinition& source_dd_of_stream_meta_type1,
401  const dd::StreamMetaType& stream_meta_type2,
402  const dd::DataDefinition& source_dd_of_stream_meta_type2,
403  uint32_t flags = icf_memory);
404 
405  // sub-item comparison
406 
418  const dd::datamodel::KeyValuePair& key_value_pair2,
419  uint32_t flags = icf_none);
420 
435  const dd::DataDefinition& source_dd_of_ref_unit1,
436  const dd::Unit::RefUnit& ref_unit2,
437  const dd::DataDefinition& source_dd_of_ref_unit2,
438  uint32_t flags = icf_none);
439 
456  const dd::DataDefinition& source_dd_of_elem1,
457  const dd::StructType::Element& elem2,
458  const dd::DataDefinition& source_dd_of_elem2,
459  uint32_t flags = icf_none);
460 
474  static a_util::result::Result isEqual(const dd::Stream::Struct& stream_struct1,
475  const dd::DataDefinition& source_dd_of_stream_struct1,
476  const dd::Stream::Struct& stream_struct2,
477  const dd::DataDefinition& source_dd_of_stream_struct2,
478  uint32_t flags = icf_none);
479 
480  // description based methods
481 
491  static a_util::result::Result isEqual(const std::string& desc1,
492  const std::string& desc2,
493  uint32_t flags = dcf_all | dcf_subset);
494 
505  const dd::DataDefinition& desc2,
506  uint32_t flags = dcf_all | dcf_subset);
507 };
508 
509 } // namespace ddl
510 
511 #endif // DDCOMPARE_H_INCLUDED
A common result class usable as return value throughout.
Utility class to compare data descriptions.
Definition: ddcompare.h:25
static a_util::result::Result isBinaryEqual(const std::string &type1, const dd::DataDefinition &desc1, ddl::DataRepresentation rep1, const std::string &type2, const dd::DataDefinition &desc2, ddl::DataRepresentation rep2, bool is_subset=true)
isBinaryEqual checks whether two type descriptions describe the same binary data layout.
static a_util::result::Result isEqual(const dd::UnitPrefix &prefix1, const dd::UnitPrefix &prefix2, uint32_t flags=icf_none)
isEqual checks whether two prefix descriptions are equal.
static a_util::result::Result isEqual(const dd::Stream &stream1, const dd::DataDefinition &source_dd_of_stream1, const dd::Stream &stream2, const dd::DataDefinition &source_dd_of_stream2, uint32_t flags=icf_memory)
isEqual checks whether two stream descriptions are equal.
static a_util::result::Result isEqualType(const std::string &type1, const std::string &desc1, const std::string &type2, const std::string &desc2, uint32_t flags=icf_memory)
isEqual checks whether two type (POD/enum/struct) descriptions are equal.
static a_util::result::Result isEqual(const dd::StructType &type1, const dd::DataDefinition &source_dd_of_type1, const dd::StructType &type2, const dd::DataDefinition &source_dd_of_type2, uint32_t flags=icf_memory)
isEqual checks whether two type (POD/enum/struct) descriptions are equal When this is true for a stru...
static a_util::result::Result isBinaryEqual(const std::string &type1, const std::string &desc1, const std::string &type2, const std::string &desc2, bool is_subset=true)
isBinaryEqual checks whether two type descriptions describe the same binary data layout in deserializ...
DescriptionCheckFlags
Flags for the description based isEqual methods.
Definition: ddcompare.h:30
@ dcf_prefixes
Compare prefixes.
Definition: ddcompare.h:37
@ dcf_versions
Compares the version attributes as well.
Definition: ddcompare.h:41
@ dcf_visualization_attributes
Check attributes relevant for visualization (min/max/default/scale/offset)
Definition: ddcompare.h:45
@ dcf_everything
Check everything (all flags except the "No" variants)
Definition: ddcompare.h:53
@ dcf_data_types
Compare datatypes.
Definition: ddcompare.h:31
@ dcf_streams
Compare streams.
Definition: ddcompare.h:35
@ dcf_subset
Checks whether the first description is a subset of the second.
Definition: ddcompare.h:40
@ dcf_header
Compare the header as well.
Definition: ddcompare.h:44
@ dcf_all
Compare all elements (see above)
Definition: ddcompare.h:39
@ dcf_stream_meta_types
Compare stream_meta_types.
Definition: ddcompare.h:38
@ dcf_no_recursion
Do not compare sub-entities (elements, ref units, stream structs, ...)
Definition: ddcompare.h:48
@ dcf_descriptions
Compares the description attributes as well.
Definition: ddcompare.h:43
@ dcf_base_units
Compare baseunits.
Definition: ddcompare.h:36
@ dcf_comments
Compares the comment attributes as well.
Definition: ddcompare.h:42
@ dcf_structs
Compare structs.
Definition: ddcompare.h:34
@ dcf_units
Compare units.
Definition: ddcompare.h:32
@ dcf_enums
Compare enums.
Definition: ddcompare.h:33
@ dcf_no_header_dates
Do not compare header dates (date_creation, date_change)
Definition: ddcompare.h:50
@ dcf_no_enum_values_check
Do not compare enum values.
Definition: ddcompare.h:47
ItemCheckFlags
Flags for the item based isEqual methods.
Definition: ddcompare.h:59
@ icf_visualizations_attributes
Check attributes relevant for visualization (min/max/default/scale/offset)
Definition: ddcompare.h:71
@ icf_descriptions
Compare the comments as well.
Definition: ddcompare.h:69
@ icf_comments
Compare the comments as well.
Definition: ddcompare.h:68
@ icf_versions
Compare the versions of all elements and structs and stream meta types.
Definition: ddcompare.h:65
@ icf_subset
Check if the first item is a subset of the second.
Definition: ddcompare.h:70
@ icf_memory
Compare the in-memory representation.
Definition: ddcompare.h:61
@ icf_no_recursion
Do not compare sub-entities (elements, ref units, stream structs, ...)
Definition: ddcompare.h:74
@ icf_everything
Check everything (mind no_recursion and no_enum is not changed here)
Definition: ddcompare.h:76
@ icf_serialized
Compare the serialized representation.
Definition: ddcompare.h:62
@ icf_no_enum_values_check
Do not compare enum values.
Definition: ddcompare.h:73
@ icf_units
Compare the units as well.
Definition: ddcompare.h:67
@ icf_names
Compare the names of structs and their elements and stream meta types parent.
Definition: ddcompare.h:63
static a_util::result::Result isEqual(const std::string &desc1, const std::string &desc2, uint32_t flags=dcf_all|dcf_subset)
isEqual checks whether two descriptions are equal.
static a_util::result::Result isEqual(const dd::Unit::RefUnit &ref_unit1, const dd::DataDefinition &source_dd_of_ref_unit1, const dd::Unit::RefUnit &ref_unit2, const dd::DataDefinition &source_dd_of_ref_unit2, uint32_t flags=icf_none)
isEqual checks whether two reference units are equal.
static a_util::result::Result isEqualStream(const std::string &stream1, const std::string &desc1, const std::string &stream2, const std::string &desc2, uint32_t flags=icf_memory)
isEqual checks whether two stream descriptions are equal.
static a_util::result::Result isEqual(const dd::StreamMetaType &stream_meta_type1, const dd::DataDefinition &source_dd_of_stream_meta_type1, const dd::StreamMetaType &stream_meta_type2, const dd::DataDefinition &source_dd_of_stream_meta_type2, uint32_t flags=icf_memory)
isEqual checks whether two stream meta types descriptions are equal.
static a_util::result::Result isEqual(const dd::DataDefinition &desc1, const dd::DataDefinition &desc2, uint32_t flags=dcf_all|dcf_subset)
isEqual checks whether two descriptions are equal.
static a_util::result::Result isBinaryEqual(const std::string &type1, const dd::DataDefinition &desc1, const std::string &type2, const dd::DataDefinition &desc2, bool is_subset=true)
isBinaryEqual checks whether two type descriptions describe the same binary data layout in deserializ...
static a_util::result::Result isEqual(const dd::datamodel::KeyValuePair &key_value_pair1, const dd::datamodel::KeyValuePair &key_value_pair2, uint32_t flags=icf_none)
isEqual checks whether two external declarations of header/elements of enum/properties of streammetat...
static a_util::result::Result isEqual(const dd::Unit &unit1, const dd::DataDefinition &source_dd_of_unit1, const dd::Unit &unit2, const dd::DataDefinition &source_dd_of_unit2, uint32_t flags=icf_none)
isEqual checks whether two unit descriptions are equal.
static a_util::result::Result isEqual(const dd::DataType &type1, const dd::DataType &type2, uint32_t flags=icf_memory)
isEqual checks whether two type (POD) descriptions are equal When this is true for a struct then it a...
static a_util::result::Result isEqualPrefix(const std::string &prefix1, const std::string &desc1, const std::string &prefix2, const std::string &desc2, uint32_t flags=icf_none)
isEqualPrefix checks whether two prefix descriptions are equal.
static a_util::result::Result isEqualUnit(const std::string &unit1, const std::string &desc1, const std::string &unit2, const std::string &desc2, uint32_t flags=icf_none)
isEqualUnit checks whether two unit descriptions are equal.
static a_util::result::Result isEqual(const dd::StructType::Element &elem1, const dd::DataDefinition &source_dd_of_elem1, const dd::StructType::Element &elem2, const dd::DataDefinition &source_dd_of_elem2, uint32_t flags=icf_none)
isEqual checks whether two struct elements are equal.
static a_util::result::Result isEqual(const dd::Stream::Struct &stream_struct1, const dd::DataDefinition &source_dd_of_stream_struct1, const dd::Stream::Struct &stream_struct2, const dd::DataDefinition &source_dd_of_stream_struct2, uint32_t flags=icf_none)
isEqual checks whether two stream structs equal.
static a_util::result::Result isEqual(const dd::BaseUnit &base_unit1, const dd::BaseUnit &base_unit2, uint32_t flags=icf_none)
isEqual checks whether two unit descriptions are equal.
static a_util::result::Result isBinaryEqual(const std::string &type1, const std::string &desc1, ddl::DataRepresentation rep1, const std::string &type2, const std::string &desc2, ddl::DataRepresentation rep2, bool is_subset=true)
isBinaryEqual checks whether two type descriptions describe the same binary data layout.
static a_util::result::Result isEqual(const dd::EnumType &enum1, const dd::DataDefinition &source_dd_of_enum1, const dd::EnumType &enum2, const dd::DataDefinition &source_dd_of_enum2, uint32_t flags=icf_memory)
isEqual checks whether two type (enum) descriptions are equal When this is true for a struct then it ...
The Data Definiton class uses the validation model to keep a Data Definition datamodel (ddl::dd::data...
Definition: dd.h:92
observable DataDefinition object class to describe (POD) DataType.
observable DataDefinition object class to describe EnumType.
DataDefinition object class of datamodel to hold a streamstruct.
observable Stream DataDefinition object.
observable DataDefinition object class to describe StreamMetaType.
observable DataDefinition object class for a Element of a StructType.
observable DataDefinition object class to describe StructType.
datamodel for the refUnit
Unit Prefix - datamodel pefixes.
Definition of Data Representation header for Codec API.
OO DataDefinition - Data Definition.
Common include for component a_util::result.