diff options
author | Colin Cross <ccross@android.com> | 2017-12-22 15:47:09 -0800 |
---|---|---|
committer | Colin Cross <ccross@android.com> | 2017-12-28 17:41:02 +0000 |
commit | b4330e222b8df54727d0054075d63f2dcdf0a959 (patch) | |
tree | 4ee0ce33e234623912ee273b5817b8e8abc09e4e | |
parent | ba5b43ee44f4f5952bde73c5ddd2005ba01203cd (diff) | |
download | android_build_soong-b4330e222b8df54727d0054075d63f2dcdf0a959.tar.gz android_build_soong-b4330e222b8df54727d0054075d63f2dcdf0a959.tar.bz2 android_build_soong-b4330e222b8df54727d0054075d63f2dcdf0a959.zip |
Move string list utility functions to android package
Test: m checkbuild
Change-Id: I50a7ccf9fd7ed82b688e3eb90489c0bc0af33287
-rw-r--r-- | android/arch.go | 8 | ||||
-rw-r--r-- | android/config.go | 10 | ||||
-rw-r--r-- | android/util.go | 39 | ||||
-rw-r--r-- | cc/util.go | 49 |
4 files changed, 49 insertions, 57 deletions
diff --git a/android/arch.go b/android/arch.go index 3a225699..e696a0da 100644 --- a/android/arch.go +++ b/android/arch.go @@ -119,12 +119,12 @@ func RegisterArchFeatures(arch ArchType, features ...string) { func RegisterArchVariantFeatures(arch ArchType, variant string, features ...string) { checkCalledFromInit() - if variant != "" && !inList(variant, archVariants[arch]) { + if variant != "" && !InList(variant, archVariants[arch]) { panic(fmt.Errorf("Invalid variant %q for arch %q", variant, arch)) } for _, feature := range features { - if !inList(feature, archFeatures[arch]) { + if !InList(feature, archFeatures[arch]) { panic(fmt.Errorf("Invalid feature %q for arch %q variant %q", feature, arch, variant)) } } @@ -481,13 +481,13 @@ func createArchType(props reflect.Type) reflect.Type { if os.Linux() { target := "Linux_" + archType.Name - if !inList(target, targets) { + if !InList(target, targets) { targets = append(targets, target) } } if os.Bionic() { target := "Bionic_" + archType.Name - if !inList(target, targets) { + if !InList(target, targets) { targets = append(targets, target) } } diff --git a/android/config.go b/android/config.go index 887291df..07e25f34 100644 --- a/android/config.go +++ b/android/config.go @@ -690,12 +690,12 @@ func (c *deviceConfig) NativeCoverageEnabled() bool { func (c *deviceConfig) CoverageEnabledForPath(path string) bool { coverage := false if c.config.ProductVariables.CoveragePaths != nil { - if prefixInList(path, *c.config.ProductVariables.CoveragePaths) { + if PrefixInList(path, *c.config.ProductVariables.CoveragePaths) { coverage = true } } if coverage && c.config.ProductVariables.CoverageExcludePaths != nil { - if prefixInList(path, *c.config.ProductVariables.CoverageExcludePaths) { + if PrefixInList(path, *c.config.ProductVariables.CoverageExcludePaths) { coverage = false } } @@ -706,21 +706,21 @@ func (c *config) IntegerOverflowDisabledForPath(path string) bool { if c.ProductVariables.IntegerOverflowExcludePaths == nil { return false } - return prefixInList(path, *c.ProductVariables.IntegerOverflowExcludePaths) + return PrefixInList(path, *c.ProductVariables.IntegerOverflowExcludePaths) } func (c *config) CFIDisabledForPath(path string) bool { if c.ProductVariables.CFIExcludePaths == nil { return false } - return prefixInList(path, *c.ProductVariables.CFIExcludePaths) + return PrefixInList(path, *c.ProductVariables.CFIExcludePaths) } func (c *config) CFIEnabledForPath(path string) bool { if c.ProductVariables.CFIIncludePaths == nil { return false } - return prefixInList(path, *c.ProductVariables.CFIIncludePaths) + return PrefixInList(path, *c.ProductVariables.CFIIncludePaths) } func stringSlice(s *[]string) []string { diff --git a/android/util.go b/android/util.go index 29bb9b10..854d7828 100644 --- a/android/util.go +++ b/android/util.go @@ -54,7 +54,7 @@ func sortedKeys(m map[string][]string) []string { return s } -func indexList(s string, list []string) int { +func IndexList(s string, list []string) int { for i, l := range list { if l == s { return i @@ -64,11 +64,11 @@ func indexList(s string, list []string) int { return -1 } -func inList(s string, list []string) bool { - return indexList(s, list) != -1 +func InList(s string, list []string) bool { + return IndexList(s, list) != -1 } -func prefixInList(s string, list []string) bool { +func PrefixInList(s string, list []string) bool { for _, prefix := range list { if strings.HasPrefix(s, prefix) { return true @@ -77,6 +77,37 @@ func prefixInList(s string, list []string) bool { return false } +func FilterList(list []string, filter []string) (remainder []string, filtered []string) { + for _, l := range list { + if InList(l, filter) { + filtered = append(filtered, l) + } else { + remainder = append(remainder, l) + } + } + + return +} + +func RemoveListFromList(list []string, filter_out []string) (result []string) { + result = make([]string, 0, len(list)) + for _, l := range list { + if !InList(l, filter_out) { + result = append(result, l) + } + } + return +} + +func RemoveFromList(s string, list []string) (bool, []string) { + i := IndexList(s, list) + if i != -1 { + return true, append(list[:i], list[i+1:]...) + } else { + return false, list + } +} + // FirstUniqueStrings returns all unique elements of a slice of strings, keeping the first copy of // each. It modifies the slice contents in place, and returns a subslice of the original slice. func FirstUniqueStrings(list []string) []string { @@ -40,50 +40,11 @@ func libNamesToFlags(names []string) string { return android.JoinWithPrefix(names, "-l") } -func indexList(s string, list []string) int { - for i, l := range list { - if l == s { - return i - } - } - - return -1 -} - -func inList(s string, list []string) bool { - return indexList(s, list) != -1 -} - -func filterList(list []string, filter []string) (remainder []string, filtered []string) { - for _, l := range list { - if inList(l, filter) { - filtered = append(filtered, l) - } else { - remainder = append(remainder, l) - } - } - - return -} - -func removeListFromList(list []string, filter_out []string) (result []string) { - result = make([]string, 0, len(list)) - for _, l := range list { - if !inList(l, filter_out) { - result = append(result, l) - } - } - return -} - -func removeFromList(s string, list []string) (bool, []string) { - i := indexList(s, list) - if i != -1 { - return true, append(list[:i], list[i+1:]...) - } else { - return false, list - } -} +var indexList = android.IndexList +var inList = android.InList +var filterList = android.FilterList +var removeListFromList = android.RemoveListFromList +var removeFromList = android.RemoveFromList var libNameRegexp = regexp.MustCompile(`^lib(.*)$`) |