Move string list utility functions to android package
Test: m checkbuild
Change-Id: I50a7ccf9fd7ed82b688e3eb90489c0bc0af33287
diff --git a/android/arch.go b/android/arch.go
index 3a22569..e696a0d 100644
--- a/android/arch.go
+++ b/android/arch.go
@@ -119,12 +119,12 @@
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 @@
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 887291d..07e25f3 100644
--- a/android/config.go
+++ b/android/config.go
@@ -690,12 +690,12 @@
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 @@
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 29bb9b1..854d782 100644
--- a/android/util.go
+++ b/android/util.go
@@ -54,7 +54,7 @@
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 @@
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 @@
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 {
diff --git a/cc/util.go b/cc/util.go
index 7041029..5131b09 100644
--- a/cc/util.go
+++ b/cc/util.go
@@ -40,50 +40,11 @@
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(.*)$`)