]> Cypherpunks repositories - gostls13.git/commitdiff
encoding: new package
authorRuss Cox <rsc@golang.org>
Wed, 14 Aug 2013 04:18:20 +0000 (00:18 -0400)
committerRuss Cox <rsc@golang.org>
Wed, 14 Aug 2013 04:18:20 +0000 (00:18 -0400)
See golang.org/s/go12encoding for design.

R=r
CC=golang-dev
https://golang.org/cl/12541051

src/cmd/dist/build.c
src/pkg/encoding/encoding.go [new file with mode: 0644]
src/pkg/go/build/deps_test.go

index 07a47a39525ada2c7920cdf988de9a431904d460..fa43c77e505780a5ae1a188b0c23fcd7c31636d4 100644 (file)
@@ -992,6 +992,8 @@ install(char *dir)
                        vadd(&compile, bprintf(&b, "GOOS_%s", goos));
                        vadd(&compile, "-D");
                        vadd(&compile, bprintf(&b, "GOARCH_%s", goarch));
+                       vadd(&compile, "-D");
+                       vadd(&compile, bprintf(&b, "GOOS_GOARCH_%s_%s", goos, goarch));
                }
 
                bpathf(&b, "%s/%s", workdir, lastelem(files.p[i]));
@@ -1265,6 +1267,7 @@ static char *buildorder[] = {
        "pkg/os",
        "pkg/reflect",
        "pkg/fmt",
+       "pkg/encoding",
        "pkg/encoding/json",
        "pkg/flag",
        "pkg/path/filepath",
@@ -1317,6 +1320,7 @@ static char *cleantab[] = {
        "pkg/bufio",
        "pkg/bytes",
        "pkg/container/heap",
+       "pkg/encoding",
        "pkg/encoding/base64",
        "pkg/encoding/json",
        "pkg/errors",
diff --git a/src/pkg/encoding/encoding.go b/src/pkg/encoding/encoding.go
new file mode 100644 (file)
index 0000000..6d21807
--- /dev/null
@@ -0,0 +1,48 @@
+// Copyright 2013 The Go Authors.  All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Package encoding defines interfaces shared by other packages that
+// convert data to and from byte-level and textual representations.
+// Packages that check for these interfaces include encoding/gob,
+// encoding/json, and encoding/xml. As a result, implementing an
+// interface once can make a type useful in multiple encodings.
+// Standard types that implement these interfaces include time.Time and net.IP.
+// The interfaces come in pairs that produce and consume encoded data.
+package encoding
+
+// BinaryMarshaler is the interface implemented by an object that can
+// marshal itself into a binary form.
+//
+// MarshalBinary encodes the receiver into a binary form and returns the result.
+type BinaryMarshaler interface {
+       MarshalBinary() (data []byte, err error)
+}
+
+// BinaryUnmarshaler is the interface implemented by an object that can
+// unmarshal a binary representation of itself.
+//
+// UnmarshalBinary must be able to decode the form generated by MarshalBinary.
+// UnmarshalBinary must copy the data if it wishes to retain the data
+// after returning.
+type BinaryUnmarshaler interface {
+       UnmarshalBinary(data []byte) error
+}
+
+// TextMarshaler is the interface implemented by an object that can
+// marshal itself into a textual form.
+//
+// MarshalText encodes the receiver into UTF-8-encoded text and returns the result.
+type TextMarshaler interface {
+       MarshalText() (text []byte, err error)
+}
+
+// TextUnmarshaler is the interface implemented by an object that can
+// unmarshal a textual representation of itself.
+//
+// UnmarshalText must be able to decode the form generated by MarshalText.
+// UnmarshalText must copy the text if it wishes to retain the text
+// after returning.
+type TextUnmarshaler interface {
+       UnmarshalText(text []byte) error
+}
index 23cbce3652aa4e2b58f55ae2535aa5c647792efe..5e5982422bf2436e30f9c8d957813447d2cd9d16 100644 (file)
@@ -192,12 +192,13 @@ var pkgDeps = map[string][]string{
        "debug/gosym":         {"L4"},
        "debug/macho":         {"L4", "OS", "debug/dwarf"},
        "debug/pe":            {"L4", "OS", "debug/dwarf"},
+       "encoding":            {"L4"},
        "encoding/ascii85":    {"L4"},
        "encoding/asn1":       {"L4", "math/big"},
        "encoding/csv":        {"L4"},
-       "encoding/gob":        {"L4", "OS"},
+       "encoding/gob":        {"L4", "OS", "encoding"},
        "encoding/hex":        {"L4"},
-       "encoding/json":       {"L4"},
+       "encoding/json":       {"L4", "encoding"},
        "encoding/pem":        {"L4"},
        "encoding/xml":        {"L4"},
        "flag":                {"L4", "OS"},