ADTF  3.18.2
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>
19 
20 namespace ddl {
24 class DDCompare {
25 public:
30  dcf_data_types = 0x01,
31  dcf_units = 0x02,
32  dcf_enums = 0x04,
33  dcf_structs = 0x08,
34  dcf_streams = 0x10,
35  dcf_base_units = 0x20,
36  dcf_prefixes = 0x40,
38  dcf_all = 0xFF,
39  dcf_subset = 0x0100,
40  dcf_versions = 0x0200,
41  dcf_comments = 0x0400,
42  dcf_descriptions = 0x0800,
43  dcf_header = 0x1000,
45  0x2000,
48  0x020000,
50  0x040000,
51 
52  dcf_everything = 0xFFFF
53  };
54 
59  icf_none = 0x00,
60  icf_memory = 0x01,
61  icf_serialized = 0x02,
62  icf_names =
63  0x04,
64  icf_versions =
65  0x08,
66  icf_units = 0x10,
67  icf_comments = 0x20,
69  icf_subset = 0x80,
71  0x0100,
74  0x0400,
76  0x1FF
77  };
78 
79 public:
101  static a_util::result::Result isBinaryEqual(const std::string& type1,
102  const std::string& desc1,
103  const std::string& type2,
104  const std::string& desc2,
105  bool is_subset = true);
106 
128  static a_util::result::Result isBinaryEqual(const std::string& type1,
129  const dd::DataDefinition& desc1,
130  const std::string& type2,
131  const dd::DataDefinition& desc2,
132  bool is_subset = true);
133 
134  // main ddl entities comparisons
135 
147  static a_util::result::Result isEqualPrefix(const std::string& prefix1,
148  const std::string& desc1,
149  const std::string& prefix2,
150  const std::string& desc2,
151  uint32_t flags = icf_none);
152 
163  const dd::UnitPrefix& prefix2,
164  uint32_t flags = icf_none);
165 
177  static a_util::result::Result isEqualUnit(const std::string& unit1,
178  const std::string& desc1,
179  const std::string& unit2,
180  const std::string& desc2,
181  uint32_t flags = icf_none);
182 
195  const dd::DataDefinition& source_dd_of_unit1,
196  const dd::Unit& unit2,
197  const dd::DataDefinition& source_dd_of_unit2,
198  uint32_t flags = icf_none);
199 
209  static a_util::result::Result isEqual(const dd::BaseUnit& base_unit1,
210  const dd::BaseUnit& base_unit2,
211  uint32_t flags = icf_none);
212 
225  static a_util::result::Result isEqualType(const std::string& type1,
226  const std::string& desc1,
227  const std::string& type2,
228  const std::string& desc2,
229  uint32_t flags = icf_memory);
230 
242  const dd::DataType& type2,
243  uint32_t flags = icf_memory);
244 
260  const dd::DataDefinition& source_dd_of_enum1,
261  const dd::EnumType& enum2,
262  const dd::DataDefinition& source_dd_of_enum2,
263  uint32_t flags = icf_memory);
264 
280  const dd::DataDefinition& source_dd_of_type1,
281  const dd::StructType& type2,
282  const dd::DataDefinition& source_dd_of_type2,
283  uint32_t flags = icf_memory);
284 
296  static a_util::result::Result isEqualStream(const std::string& stream1,
297  const std::string& desc1,
298  const std::string& stream2,
299  const std::string& desc2,
300  uint32_t flags = icf_memory);
301 
316  const dd::DataDefinition& source_dd_of_stream1,
317  const dd::Stream& stream2,
318  const dd::DataDefinition& source_dd_of_stream2,
319  uint32_t flags = icf_memory);
320 
334  static a_util::result::Result isEqual(const dd::StreamMetaType& stream_meta_type1,
335  const dd::DataDefinition& source_dd_of_stream_meta_type1,
336  const dd::StreamMetaType& stream_meta_type2,
337  const dd::DataDefinition& source_dd_of_stream_meta_type2,
338  uint32_t flags = icf_memory);
339 
340  // sub-item comparison
341 
353  const dd::datamodel::KeyValuePair& key_value_pair2,
354  uint32_t flags = icf_none);
355 
370  const dd::DataDefinition& source_dd_of_ref_unit1,
371  const dd::Unit::RefUnit& ref_unit2,
372  const dd::DataDefinition& source_dd_of_ref_unit2,
373  uint32_t flags = icf_none);
374 
391  const dd::DataDefinition& source_dd_of_elem1,
392  const dd::StructType::Element& elem2,
393  const dd::DataDefinition& source_dd_of_elem2,
394  uint32_t flags = icf_none);
395 
409  static a_util::result::Result isEqual(const dd::Stream::Struct& stream_struct1,
410  const dd::DataDefinition& source_dd_of_stream_struct1,
411  const dd::Stream::Struct& stream_struct2,
412  const dd::DataDefinition& source_dd_of_stream_struct2,
413  uint32_t flags = icf_none);
414 
415  // description based methods
416 
426  static a_util::result::Result isEqual(const std::string& desc1,
427  const std::string& desc2,
428  uint32_t flags = dcf_all | dcf_subset);
429 
440  const dd::DataDefinition& desc2,
441  uint32_t flags = dcf_all | dcf_subset);
442 };
443 
444 } // namespace ddl
445 
446 #endif // DDCOMPARE_H_INCLUDED
A common result class usable as return value throughout.
Utility class to compare data descriptions.
Definition: ddcompare.h:24
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
DescriptionCheckFlags
Flags for the description based isEqual methods.
Definition: ddcompare.h:29
@ dcf_prefixes
Compare prefixes.
Definition: ddcompare.h:36
@ dcf_versions
Compares the version attributes as well.
Definition: ddcompare.h:40
@ dcf_visualization_attributes
Check attributes relevant for visualization (min/max/default/scale/offset)
Definition: ddcompare.h:44
@ dcf_everything
Check everything (all flags except the "No" variants)
Definition: ddcompare.h:52
@ dcf_data_types
Compare datatypes.
Definition: ddcompare.h:30
@ dcf_streams
Compare streams.
Definition: ddcompare.h:34
@ dcf_subset
Checks whether the first description is a subset of the second.
Definition: ddcompare.h:39
@ dcf_header
Compare the header as well.
Definition: ddcompare.h:43
@ dcf_all
Compare all elements (see above)
Definition: ddcompare.h:38
@ dcf_stream_meta_types
Compare stream_meta_types.
Definition: ddcompare.h:37
@ dcf_no_recursion
Do not compare sub-entities (elements, ref units, stream structs, ...)
Definition: ddcompare.h:47
@ dcf_descriptions
Compares the description attributes as well.
Definition: ddcompare.h:42
@ dcf_base_units
Compare baseunits.
Definition: ddcompare.h:35
@ dcf_comments
Compares the comment attributes as well.
Definition: ddcompare.h:41
@ dcf_structs
Compare structs.
Definition: ddcompare.h:33
@ dcf_units
Compare units.
Definition: ddcompare.h:31
@ dcf_enums
Compare enums.
Definition: ddcompare.h:32
@ dcf_no_header_dates
Do not compare header dates (date_creation, date_change)
Definition: ddcompare.h:49
@ dcf_no_enum_values_check
Do not compare enum values.
Definition: ddcompare.h:46
ItemCheckFlags
Flags for the item based isEqual methods.
Definition: ddcompare.h:58
@ icf_visualizations_attributes
Check attributes relevant for visualization (min/max/default/scale/offset)
Definition: ddcompare.h:70
@ icf_descriptions
Compare the comments as well.
Definition: ddcompare.h:68
@ icf_comments
Compare the comments as well.
Definition: ddcompare.h:67
@ icf_versions
Compare the versions of all elements and structs and stream meta types.
Definition: ddcompare.h:64
@ icf_subset
Check if the first item is a subset of the second.
Definition: ddcompare.h:69
@ icf_memory
Compare the in-memory representation.
Definition: ddcompare.h:60
@ icf_no_recursion
Do not compare sub-entities (elements, ref units, stream structs, ...)
Definition: ddcompare.h:73
@ icf_everything
Check everything (mind no_recursion and no_enum is not changed here)
Definition: ddcompare.h:75
@ icf_serialized
Compare the serialized representation.
Definition: ddcompare.h:61
@ icf_no_enum_values_check
Do not compare enum values.
Definition: ddcompare.h:72
@ icf_units
Compare the units as well.
Definition: ddcompare.h:66
@ icf_names
Compare the names of structs and their elements and stream meta types parent.
Definition: ddcompare.h:62
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
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 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:87
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.
OO DataDefinition - Data Definition.
Common include for component a_util::result.