(Struct1, Struct2)
| 504 | logging.error ("\t'{0}' member '{1}' Doesn't exist in '{2}'".format(Struct1.Name, Member1.Name, Struct2.Name)); |
| 505 | |
| 506 | def CompareStructs(Struct1, Struct2): |
| 507 | HadWarning = False |
| 508 | HadError = False |
| 509 | |
| 510 | # Check if the struct size is a mismatch |
| 511 | if (Struct1.Size != Struct2.Size): |
| 512 | logging.warning ("\t#### Warning: Struct size mismatch. {0} != {1}".format(Struct1.Size, Struct2.Size)) |
| 513 | logging.warning ("\t\tMight not be a problem if struct isn't in used inside another struct, or end of object") |
| 514 | HadWarning = True |
| 515 | |
| 516 | # Check if the number of members differ |
| 517 | if (len(Struct1.Members) != len(Struct2.Members)): |
| 518 | logging.error ("@@@@ ERROR: Struct fields mismatch! Number of fields don't match! {0} != {1}".format(len(Struct1.Members), len(Struct2.Members))); |
| 519 | PrintMissingMembers(Struct1, Struct2) |
| 520 | PrintMissingMembers(Struct2, Struct1) |
| 521 | HadError = True |
| 522 | else: |
| 523 | # Compare the members themselves |
| 524 | for StructMemberIndex in range(0, len(Struct1.Members)): |
| 525 | Member1 = Struct1.Members[StructMemberIndex] |
| 526 | Member2 = Struct2.Members[StructMemberIndex] |
| 527 | if (Member1.Type == TypeDefinition.TYPE_FIELD): |
| 528 | if (Member1.Size != Member2.Size): |
| 529 | logging.error ("\t@@@@ ERROR: Member '{0}' mismatch Size! {1} != {2}".format(Member1.Name, Member1.Size, Member2.Size)); |
| 530 | HadError = True |
| 531 | if (Member1.OffsetOf != Member2.OffsetOf): |
| 532 | logging.error ("\t@@@@ ERROR: Member '{0}' mismatch OffsetOf! {1} != {2}".format(Member1.Name, Member1.OffsetOf, Member2.OffsetOf)); |
| 533 | HadError = True |
| 534 | if (Member1.Alignment != Member2.Alignment): |
| 535 | logging.error ("\t@@@@ ERROR: Member '{0}' mismatch Alignment! {1} != {2}".format(Member1.Name, Member1.Alignment, Member2.Alignment)); |
| 536 | logging.error ("\t\tProbably not a problem if offset and size matches"); |
| 537 | HadWarning = True |
| 538 | else: |
| 539 | logging.critical ("Oops, didn't handle member type {0}".format(Member1.Type)) |
| 540 | pass |
| 541 | |
| 542 | return not (HadWarning or HadError) |
| 543 | |
| 544 | def CompareAliases(DB, DBs): |
| 545 | Passed = True |
no test coverage detected