ADTF  3.18.2
ddlcompare.h
Go to the documentation of this file.
1 
7 #ifndef _DDLCOMPARE_H_INCLUDED_
8 #define _DDLCOMPARE_H_INCLUDED_
9 
10 namespace adtf_ddl
11 {
12 
17 {
18  public:
23  {
24  DCF_Everything = 0x00,
25  DCF_DataTypes = 0x01,
26  DCF_Units = 0x02,
27  DCF_Enums = 0x04,
28  DCF_Structs = 0x08,
29  DCF_Streams = 0x10,
30  DCF_BaseUnits = 0x20,
31  DCF_Prefixes = 0x40,
32  DCF_All = 0xFF,
33  DCF_SubSet = 0x0100,
34  DCF_Versions = 0x0200,
35  DCF_Comments = 0x0400,
36  DCF_Descriptions = 0x0800,
37  DCF_Header = 0x1000,
39  DCF_NoEnumValuesCheck = 0x010000,
40  DCF_NoRecursion = 0x020000
41  };
42 
47  {
48  ICF_None = 0x00,
49  ICF_Memory = 0x01,
50  ICF_Serialized = 0x02,
51  ICF_Names = 0x04,
52  ICF_Versions = 0x08,
53  ICF_Units = 0x10,
54  ICF_Comments = 0x20,
56  ICF_SubSet = 0x80,
59  ICF_NoRecursion = 0x0400
60  };
61 
62  public:
63 
75  static tResult IsBinaryEqual(const A_UTILS_NS::cString& strType1, const A_UTILS_NS::cString& strDesc1,
76  const A_UTILS_NS::cString& strType2, const A_UTILS_NS::cString& strDesc2,
77  bool bIsSubSet = true);
78 
90  static tResult IsBinaryEqual(const A_UTILS_NS::cString& strType1, const cDDLDescription* pDesc1,
91  const A_UTILS_NS::cString& strType2, const cDDLDescription* pDesc2,
92  bool bIsSubSet = true);
93 
94  // main ddl entities comparisons
95 
107  static tResult IsEqualPrefix(const A_UTILS_NS::cString& strPrefix1, const A_UTILS_NS::cString& strDesc1,
108  const A_UTILS_NS::cString& strPrefix2, const A_UTILS_NS::cString& strDesc2,
109  uint32_t ui32Flags = ICF_None);
110 
120  static tResult IsEqual(const cDDLPrefix* pPrefix1, const cDDLPrefix* pPrefix2,
121  uint32_t ui32Flags = ICF_None);
122 
134  static tResult IsEqualUnit(const A_UTILS_NS::cString& strUnit1, const A_UTILS_NS::cString& strDesc1,
135  const A_UTILS_NS::cString& strUnit2, const A_UTILS_NS::cString& strDesc2,
136  uint32_t ui32Flags = ICF_None);
137 
147  static tResult IsEqual(const IDDLUnit* pUnit1, const IDDLUnit* pUnit2,
148  uint32_t ui32Flags = ICF_None);
149 
162  static tResult IsEqualType(const A_UTILS_NS::cString& strType1, const A_UTILS_NS::cString& strDesc1,
163  const A_UTILS_NS::cString& strType2, const A_UTILS_NS::cString& strDesc2,
164  uint32_t ui32Flags = ICF_Memory);
165 
176  static tResult IsEqual(const IDDLDataType* pType1, const IDDLDataType* pType2,
177  uint32_t ui32Flags = ICF_Memory);
178 
190  static tResult IsEqualStream(const A_UTILS_NS::cString& strStream1, const A_UTILS_NS::cString& strDesc1,
191  const A_UTILS_NS::cString& strStream2, const A_UTILS_NS::cString& strDesc2,
192  uint32_t ui32Flags = ICF_Memory);
193 
203  static tResult IsEqual(const cDDLStream* pStream1, const cDDLStream* pStream2,
204  uint32_t ui32Flags = ICF_Memory);
205 
206  // sub-item comparison
207 
217  static tResult IsEqual(const cDDLExtDeclaration* pExt1, const cDDLExtDeclaration* pExt2,
218  uint32_t ui32Flags = ICF_None);
219 
229  static tResult IsEqual(const cDDLRefUnit* pRefUnit1, const cDDLRefUnit* pRefUnit2,
230  uint32_t ui32Flags = ICF_None);
231 
243  static tResult IsEqual(const cDDLElement* pElem1, const cDDLElement* pElem2,
244  uint32_t ui32Flags = ICF_None);
245 
255  static tResult IsEqual(const cDDLStreamStruct* pStreamStruct1, const cDDLStreamStruct* pStreamStruct2,
256  uint32_t ui32Flags = ICF_None);
257 
258  // description based methods
259 
269  static tResult IsEqual(const A_UTILS_NS::cString& strDesc1,
270  const A_UTILS_NS::cString& strDesc2,
271  uint32_t ui32Flags = DCF_All | DCF_SubSet);
272 
282  static tResult IsEqual(const cDDLDescription* pDesc1,
283  const cDDLDescription* pDesc2,
284  uint32_t ui32Flags = DCF_All | DCF_SubSet);
285 };
286 
287 }
288 
289 #endif
Common interface for DDL datatypes.
Interface for unit classes of the object representation for DDL descriptions.
Definition: ddlunit_intf.h:17
Utility class to compare media descriptions.
Definition: ddlcompare.h:17
tDescriptionCheckFlags
Flags for the description based IsEqual methods.
Definition: ddlcompare.h:23
@ DCF_VisualizationAttributes
Check attributes relevant for visualization (min/max/default/scale/offset)
Definition: ddlcompare.h:38
@ DCF_Descriptions
Compares the description attributes as well.
Definition: ddlcompare.h:36
@ DCF_Header
Compare the header as well.
Definition: ddlcompare.h:37
@ DCF_Structs
Compare structs.
Definition: ddlcompare.h:28
@ DCF_Enums
Compare enums.
Definition: ddlcompare.h:27
@ DCF_NoEnumValuesCheck
Do not compare enum values.
Definition: ddlcompare.h:39
@ DCF_SubSet
Checks whether the first description is a subset of the second.
Definition: ddlcompare.h:33
@ DCF_Streams
Compare streams.
Definition: ddlcompare.h:29
@ DCF_Comments
Compares the comment attributes as well.
Definition: ddlcompare.h:35
@ DCF_Prefixes
Compare prefixes.
Definition: ddlcompare.h:31
@ DCF_DataTypes
Compare datatypes.
Definition: ddlcompare.h:25
@ DCF_NoRecursion
Do not compare sub-entities (elements, ref units, stream structs, ...)
Definition: ddlcompare.h:40
@ DCF_Versions
Compares the version attributes as well.
Definition: ddlcompare.h:34
@ DCF_All
Compare all elements (see above)
Definition: ddlcompare.h:32
@ DCF_BaseUnits
Compare baseunits.
Definition: ddlcompare.h:30
@ DCF_Units
Compare units.
Definition: ddlcompare.h:26
@ DCF_Everything
Check everything.
Definition: ddlcompare.h:24
static tResult IsBinaryEqual(const A_UTILS_NS::cString &strType1, const cDDLDescription *pDesc1, const A_UTILS_NS::cString &strType2, const cDDLDescription *pDesc2, bool bIsSubSet=true)
IsBinaryEqual checks whether two type descriptions describe the same binary data layout.
static tResult IsEqual(const cDDLDescription *pDesc1, const cDDLDescription *pDesc2, uint32_t ui32Flags=DCF_All|DCF_SubSet)
IsEqual checks whether two descriptions are equal.
static tResult IsEqual(const cDDLStream *pStream1, const cDDLStream *pStream2, uint32_t ui32Flags=ICF_Memory)
IsEqual checks whether two stream descriptions are equal.
static tResult IsEqual(const IDDLDataType *pType1, const IDDLDataType *pType2, uint32_t ui32Flags=ICF_Memory)
IsEqual checks whether two type (POD/enum/struct) descriptions are equal When this is true for a stru...
static tResult IsEqual(const cDDLRefUnit *pRefUnit1, const cDDLRefUnit *pRefUnit2, uint32_t ui32Flags=ICF_None)
IsEqual checks whether two reference units are equal.
static tResult IsEqualPrefix(const A_UTILS_NS::cString &strPrefix1, const A_UTILS_NS::cString &strDesc1, const A_UTILS_NS::cString &strPrefix2, const A_UTILS_NS::cString &strDesc2, uint32_t ui32Flags=ICF_None)
IsEqualPrefix checks whether two prefix descriptions are equal.
static tResult IsEqual(const IDDLUnit *pUnit1, const IDDLUnit *pUnit2, uint32_t ui32Flags=ICF_None)
IsEqual checks whether two unit descriptions are equal.
static tResult IsEqual(const cDDLExtDeclaration *pExt1, const cDDLExtDeclaration *pExt2, uint32_t ui32Flags=ICF_None)
IsEqual checks whether two external declarations are equal.
static tResult IsBinaryEqual(const A_UTILS_NS::cString &strType1, const A_UTILS_NS::cString &strDesc1, const A_UTILS_NS::cString &strType2, const A_UTILS_NS::cString &strDesc2, bool bIsSubSet=true)
IsBinaryEqual checks whether two type descriptions describe the same binary data layout.
static tResult IsEqualUnit(const A_UTILS_NS::cString &strUnit1, const A_UTILS_NS::cString &strDesc1, const A_UTILS_NS::cString &strUnit2, const A_UTILS_NS::cString &strDesc2, uint32_t ui32Flags=ICF_None)
IsEqualUnit checks whether two unit descriptions are equal.
static tResult IsEqualStream(const A_UTILS_NS::cString &strStream1, const A_UTILS_NS::cString &strDesc1, const A_UTILS_NS::cString &strStream2, const A_UTILS_NS::cString &strDesc2, uint32_t ui32Flags=ICF_Memory)
IsEqual checks whether two stream descriptions are equal.
static tResult IsEqual(const A_UTILS_NS::cString &strDesc1, const A_UTILS_NS::cString &strDesc2, uint32_t ui32Flags=DCF_All|DCF_SubSet)
IsEqual checks whether two descriptions are equal.
static tResult IsEqual(const cDDLPrefix *pPrefix1, const cDDLPrefix *pPrefix2, uint32_t ui32Flags=ICF_None)
IsEqual checks whether two prefix descriptions are equal.
static tResult IsEqual(const cDDLStreamStruct *pStreamStruct1, const cDDLStreamStruct *pStreamStruct2, uint32_t ui32Flags=ICF_None)
IsEqual checks whether two stream structs equal.
static tResult IsEqual(const cDDLElement *pElem1, const cDDLElement *pElem2, uint32_t ui32Flags=ICF_None)
IsEqual checks whether two struct elements are equal.
static tResult IsEqualType(const A_UTILS_NS::cString &strType1, const A_UTILS_NS::cString &strDesc1, const A_UTILS_NS::cString &strType2, const A_UTILS_NS::cString &strDesc2, uint32_t ui32Flags=ICF_Memory)
IsEqual checks whether two type (POD/enum/struct) descriptions are equal.
tItemCheckFlags
Flags for the item based IsEqual methods.
Definition: ddlcompare.h:47
@ ICF_NoRecursion
Do not compare sub-entities (elements, ref units, stream structs, ...)
Definition: ddlcompare.h:59
@ ICF_Names
Compare the names of structs and their elements.
Definition: ddlcompare.h:51
@ ICF_Units
Compare the units as well.
Definition: ddlcompare.h:53
@ ICF_NoEnumValuesCheck
Do not compare enum values.
Definition: ddlcompare.h:58
@ ICF_VisualizationAttributes
Check attributes relevant for visualization (min/max/default/scale/offset)
Definition: ddlcompare.h:57
@ ICF_Comments
Compare the comments as well.
Definition: ddlcompare.h:54
@ ICF_Memory
Compare the in-memory representation.
Definition: ddlcompare.h:49
@ ICF_SubSet
Check if the first item is a subset of the second.
Definition: ddlcompare.h:56
@ ICF_Versions
Compare the versions of all elements and structs.
Definition: ddlcompare.h:52
@ ICF_Serialized
Compare the serialized representation.
Definition: ddlcompare.h:50
@ ICF_Descriptions
Compare the comments as well.
Definition: ddlcompare.h:55
Main class representing a whole DDL description.
Representation of an element inside a struct in DDL a description.
Definition: ddlelement.h:19
Representation of an external declaration inside the header of a DDL description.
Representation of a prefix in a DDL description.
Definition: ddlprefix.h:17
Decorator class for IDDLUnit objects to be used inside other cDDLUnit objects.
Definition: ddlrefunit.h:18
Representation of a stream inside a DDL description.
Definition: ddlstream.h:28
Decorator class for cDDLComplex to be used inside cDDLStream objects.
Namespace for the mainpage_pkg_ddl.