src

Go monorepo.
git clone git://code.dwrz.net/src
Log | Files | Refs

marshal.go (907B)


      1 // Copyright 2016 Google Inc.  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 uuid
      6 
      7 import "fmt"
      8 
      9 // MarshalText implements encoding.TextMarshaler.
     10 func (uuid UUID) MarshalText() ([]byte, error) {
     11 	var js [36]byte
     12 	encodeHex(js[:], uuid)
     13 	return js[:], nil
     14 }
     15 
     16 // UnmarshalText implements encoding.TextUnmarshaler.
     17 func (uuid *UUID) UnmarshalText(data []byte) error {
     18 	id, err := ParseBytes(data)
     19 	if err != nil {
     20 		return err
     21 	}
     22 	*uuid = id
     23 	return nil
     24 }
     25 
     26 // MarshalBinary implements encoding.BinaryMarshaler.
     27 func (uuid UUID) MarshalBinary() ([]byte, error) {
     28 	return uuid[:], nil
     29 }
     30 
     31 // UnmarshalBinary implements encoding.BinaryUnmarshaler.
     32 func (uuid *UUID) UnmarshalBinary(data []byte) error {
     33 	if len(data) != 16 {
     34 		return fmt.Errorf("invalid UUID (got %d bytes)", len(data))
     35 	}
     36 	copy(uuid[:], data)
     37 	return nil
     38 }