Use ArchType in dexpreopt config
Make ArchType implement the encoding.TextMarshaller and
encoding.TextUnmarshaller interfaces so that it can be used
as a value in the dexpreopt config structs that are passed
through JSON files.
Test: m checkbuild
Change-Id: Ie4c12443e7ee5fe43f42d5403bcde12d62f617e2
diff --git a/android/arch.go b/android/arch.go
index ad812a4..b88b275 100644
--- a/android/arch.go
+++ b/android/arch.go
@@ -15,9 +15,11 @@
package android
import (
+ "encoding"
"fmt"
"reflect"
"runtime"
+ "strconv"
"strings"
"github.com/google/blueprint/proptools"
@@ -369,6 +371,23 @@
return a.Name
}
+var _ encoding.TextMarshaler = ArchType{}
+
+func (a ArchType) MarshalText() ([]byte, error) {
+ return []byte(strconv.Quote(a.String())), nil
+}
+
+var _ encoding.TextUnmarshaler = &ArchType{}
+
+func (a *ArchType) UnmarshalText(text []byte) error {
+ if u, ok := archTypeMap[string(text)]; ok {
+ *a = u
+ return nil
+ }
+
+ return fmt.Errorf("unknown ArchType %q", text)
+}
+
var BuildOs = func() OsType {
switch runtime.GOOS {
case "linux":