1*ba677afaSXin Li// SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later 2*ba677afaSXin Li 3*ba677afaSXin Lipackage spdxlib 4*ba677afaSXin Li 5*ba677afaSXin Liimport ( 6*ba677afaSXin Li "github.com/spdx/tools-golang/spdx/common" 7*ba677afaSXin Li "github.com/spdx/tools-golang/spdx/v2_1" 8*ba677afaSXin Li "github.com/spdx/tools-golang/spdx/v2_2" 9*ba677afaSXin Li "github.com/spdx/tools-golang/spdx/v2_3" 10*ba677afaSXin Li) 11*ba677afaSXin Li 12*ba677afaSXin Li// FilterRelationships2_1 returns a slice of Element IDs returned by the given filter closure. The closure is passed 13*ba677afaSXin Li// one relationship at a time, and it can return an ElementID or nil. 14*ba677afaSXin Lifunc FilterRelationships2_1(doc *v2_1.Document, filter func(*v2_1.Relationship) *common.ElementID) ([]common.ElementID, error) { 15*ba677afaSXin Li elementIDs := []common.ElementID{} 16*ba677afaSXin Li 17*ba677afaSXin Li for _, relationship := range doc.Relationships { 18*ba677afaSXin Li if id := filter(relationship); id != nil { 19*ba677afaSXin Li elementIDs = append(elementIDs, *id) 20*ba677afaSXin Li } 21*ba677afaSXin Li } 22*ba677afaSXin Li 23*ba677afaSXin Li return elementIDs, nil 24*ba677afaSXin Li} 25*ba677afaSXin Li 26*ba677afaSXin Li// FilterRelationships2_2 returns a slice of Element IDs returned by the given filter closure. The closure is passed 27*ba677afaSXin Li// one relationship at a time, and it can return an ElementID or nil. 28*ba677afaSXin Lifunc FilterRelationships2_2(doc *v2_2.Document, filter func(*v2_2.Relationship) *common.ElementID) ([]common.ElementID, error) { 29*ba677afaSXin Li elementIDs := []common.ElementID{} 30*ba677afaSXin Li 31*ba677afaSXin Li for _, relationship := range doc.Relationships { 32*ba677afaSXin Li if id := filter(relationship); id != nil { 33*ba677afaSXin Li elementIDs = append(elementIDs, *id) 34*ba677afaSXin Li } 35*ba677afaSXin Li } 36*ba677afaSXin Li 37*ba677afaSXin Li return elementIDs, nil 38*ba677afaSXin Li} 39*ba677afaSXin Li 40*ba677afaSXin Li// FilterRelationships2_3 returns a slice of Element IDs returned by the given filter closure. The closure is passed 41*ba677afaSXin Li// one relationship at a time, and it can return an ElementID or nil. 42*ba677afaSXin Lifunc FilterRelationships2_3(doc *v2_3.Document, filter func(*v2_3.Relationship) *common.ElementID) ([]common.ElementID, error) { 43*ba677afaSXin Li elementIDs := []common.ElementID{} 44*ba677afaSXin Li 45*ba677afaSXin Li for _, relationship := range doc.Relationships { 46*ba677afaSXin Li if id := filter(relationship); id != nil { 47*ba677afaSXin Li elementIDs = append(elementIDs, *id) 48*ba677afaSXin Li } 49*ba677afaSXin Li } 50*ba677afaSXin Li 51*ba677afaSXin Li return elementIDs, nil 52*ba677afaSXin Li} 53