Home | History | Annotate | Download | only in encoding
      1 // Copyright 2013 The Go Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style
      3 // license that can be found in the LICENSE file.
      4 
      5 // Package encoding defines interfaces shared by other packages that
      6 // convert data to and from byte-level and textual representations.
      7 // Packages that check for these interfaces include encoding/gob,
      8 // encoding/json, and encoding/xml. As a result, implementing an
      9 // interface once can make a type useful in multiple encodings.
     10 // Standard types that implement these interfaces include time.Time and net.IP.
     11 // The interfaces come in pairs that produce and consume encoded data.
     12 package encoding
     13 
     14 // BinaryMarshaler is the interface implemented by an object that can
     15 // marshal itself into a binary form.
     16 //
     17 // MarshalBinary encodes the receiver into a binary form and returns the result.
     18 type BinaryMarshaler interface {
     19 	MarshalBinary() (data []byte, err error)
     20 }
     21 
     22 // BinaryUnmarshaler is the interface implemented by an object that can
     23 // unmarshal a binary representation of itself.
     24 //
     25 // UnmarshalBinary must be able to decode the form generated by MarshalBinary.
     26 // UnmarshalBinary must copy the data if it wishes to retain the data
     27 // after returning.
     28 type BinaryUnmarshaler interface {
     29 	UnmarshalBinary(data []byte) error
     30 }
     31 
     32 // TextMarshaler is the interface implemented by an object that can
     33 // marshal itself into a textual form.
     34 //
     35 // MarshalText encodes the receiver into UTF-8-encoded text and returns the result.
     36 type TextMarshaler interface {
     37 	MarshalText() (text []byte, err error)
     38 }
     39 
     40 // TextUnmarshaler is the interface implemented by an object that can
     41 // unmarshal a textual representation of itself.
     42 //
     43 // UnmarshalText must be able to decode the form generated by MarshalText.
     44 // UnmarshalText must copy the text if it wishes to retain the text
     45 // after returning.
     46 type TextUnmarshaler interface {
     47 	UnmarshalText(text []byte) error
     48 }
     49