MCPcopy Create free account
hub / github.com/Autodesk/AutomaticComponentToolkit / diffStruct

Function diffStruct

Source/componentdiff.go:579–626  ·  view source on GitHub ↗
(path string, structA ComponentDefinitionStruct, structB ComponentDefinitionStruct)

Source from the content-addressed store, hash-verified

577}
578
579func diffStruct(path string, structA ComponentDefinitionStruct, structB ComponentDefinitionStruct) ([]ComponentDiffElementAdd, []ComponentDiffElementRemove, []ComponentDiffAttributeChange, error) {
580 changes := make([]ComponentDiffAttributeChange, 0)
581 adds := make([]ComponentDiffElementAdd, 0)
582 removes := make([]ComponentDiffElementRemove, 0)
583
584 pathA := path + "/structA[@name='"+ structA.Name + "']"
585 pathB := path + "/structB[@name='"+ structB.Name + "']"
586
587 IFirstChangedMember := len(structA.Members)
588 for iA, memberA := range(structA.Members) {
589 BHasMemberA := false
590 if (iA < IFirstChangedMember) && (iA < len(structB.Members)) {
591 memberB := structB.Members[iA]
592 if (memberA.Name == memberB.Name) {
593 Pchanges, err := diffMember(pathA, memberA, memberB)
594 if (err != nil) {
595 return adds, removes, changes, err
596 }
597 changes = append(changes, Pchanges...)
598 BHasMemberA = true
599 }
600 }
601 if (!BHasMemberA) {
602 var remove ComponentDiffElementRemove
603 remove.Path = path
604 remove.Removal = memberA
605 removes = append(removes, remove)
606 }
607 }
608
609 for iB, memberB := range(structB.Members) {
610 AHasMemberB := false
611 if (iB < IFirstChangedMember) && (iB < len(structA.Members)) {
612 memberA := structA.Members[iB]
613 if (memberB.Name == memberA.Name) {
614 AHasMemberB = true
615 }
616 }
617 if (!AHasMemberB) {
618 var add ComponentDiffElementAdd
619 add.Path = pathB
620 add.Addition = memberB
621 adds = append(adds, add)
622 }
623 }
624
625 return adds, removes, changes, nil
626}
627
628
629func diffStructs(path string, structsA[] ComponentDefinitionStruct, structsB[] ComponentDefinitionStruct) ([]ComponentDiffElementAdd, []ComponentDiffElementRemove, []ComponentDiffAttributeChange, error) {

Callers 1

diffStructsFunction · 0.85

Calls 1

diffMemberFunction · 0.85

Tested by

no test coverage detected