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(.*)$`)