http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newtmgr/blob/9975ef7a/newtmgr/vendor/github.com/ugorji/go/codec/binc.go
----------------------------------------------------------------------
diff --git a/newtmgr/vendor/github.com/ugorji/go/codec/binc.go 
b/newtmgr/vendor/github.com/ugorji/go/codec/binc.go
deleted file mode 100644
index 681b2b0..0000000
--- a/newtmgr/vendor/github.com/ugorji/go/codec/binc.go
+++ /dev/null
@@ -1,929 +0,0 @@
-// Copyright (c) 2012-2015 Ugorji Nwoke. All rights reserved.
-// Use of this source code is governed by a MIT license found in the LICENSE 
file.
-
-package codec
-
-import (
-       "math"
-       "reflect"
-       "time"
-)
-
-const bincDoPrune = true // No longer needed. Needed before as C lib did not 
support pruning.
-
-// vd as low 4 bits (there are 16 slots)
-const (
-       bincVdSpecial byte = iota
-       bincVdPosInt
-       bincVdNegInt
-       bincVdFloat
-
-       bincVdString
-       bincVdByteArray
-       bincVdArray
-       bincVdMap
-
-       bincVdTimestamp
-       bincVdSmallInt
-       bincVdUnicodeOther
-       bincVdSymbol
-
-       bincVdDecimal
-       _               // open slot
-       _               // open slot
-       bincVdCustomExt = 0x0f
-)
-
-const (
-       bincSpNil byte = iota
-       bincSpFalse
-       bincSpTrue
-       bincSpNan
-       bincSpPosInf
-       bincSpNegInf
-       bincSpZeroFloat
-       bincSpZero
-       bincSpNegOne
-)
-
-const (
-       bincFlBin16 byte = iota
-       bincFlBin32
-       _ // bincFlBin32e
-       bincFlBin64
-       _ // bincFlBin64e
-       // others not currently supported
-)
-
-type bincEncDriver struct {
-       e *Encoder
-       w encWriter
-       m map[string]uint16 // symbols
-       b [scratchByteArrayLen]byte
-       s uint16 // symbols sequencer
-       encNoSeparator
-}
-
-func (e *bincEncDriver) IsBuiltinType(rt uintptr) bool {
-       return rt == timeTypId
-}
-
-func (e *bincEncDriver) EncodeBuiltin(rt uintptr, v interface{}) {
-       if rt == timeTypId {
-               var bs []byte
-               switch x := v.(type) {
-               case time.Time:
-                       bs = encodeTime(x)
-               case *time.Time:
-                       bs = encodeTime(*x)
-               default:
-                       e.e.errorf("binc error encoding builtin: expect 
time.Time, received %T", v)
-               }
-               e.w.writen1(bincVdTimestamp<<4 | uint8(len(bs)))
-               e.w.writeb(bs)
-       }
-}
-
-func (e *bincEncDriver) EncodeNil() {
-       e.w.writen1(bincVdSpecial<<4 | bincSpNil)
-}
-
-func (e *bincEncDriver) EncodeBool(b bool) {
-       if b {
-               e.w.writen1(bincVdSpecial<<4 | bincSpTrue)
-       } else {
-               e.w.writen1(bincVdSpecial<<4 | bincSpFalse)
-       }
-}
-
-func (e *bincEncDriver) EncodeFloat32(f float32) {
-       if f == 0 {
-               e.w.writen1(bincVdSpecial<<4 | bincSpZeroFloat)
-               return
-       }
-       e.w.writen1(bincVdFloat<<4 | bincFlBin32)
-       bigenHelper{e.b[:4], e.w}.writeUint32(math.Float32bits(f))
-}
-
-func (e *bincEncDriver) EncodeFloat64(f float64) {
-       if f == 0 {
-               e.w.writen1(bincVdSpecial<<4 | bincSpZeroFloat)
-               return
-       }
-       bigen.PutUint64(e.b[:8], math.Float64bits(f))
-       if bincDoPrune {
-               i := 7
-               for ; i >= 0 && (e.b[i] == 0); i-- {
-               }
-               i++
-               if i <= 6 {
-                       e.w.writen1(bincVdFloat<<4 | 0x8 | bincFlBin64)
-                       e.w.writen1(byte(i))
-                       e.w.writeb(e.b[:i])
-                       return
-               }
-       }
-       e.w.writen1(bincVdFloat<<4 | bincFlBin64)
-       e.w.writeb(e.b[:8])
-}
-
-func (e *bincEncDriver) encIntegerPrune(bd byte, pos bool, v uint64, lim 
uint8) {
-       if lim == 4 {
-               bigen.PutUint32(e.b[:lim], uint32(v))
-       } else {
-               bigen.PutUint64(e.b[:lim], v)
-       }
-       if bincDoPrune {
-               i := pruneSignExt(e.b[:lim], pos)
-               e.w.writen1(bd | lim - 1 - byte(i))
-               e.w.writeb(e.b[i:lim])
-       } else {
-               e.w.writen1(bd | lim - 1)
-               e.w.writeb(e.b[:lim])
-       }
-}
-
-func (e *bincEncDriver) EncodeInt(v int64) {
-       const nbd byte = bincVdNegInt << 4
-       if v >= 0 {
-               e.encUint(bincVdPosInt<<4, true, uint64(v))
-       } else if v == -1 {
-               e.w.writen1(bincVdSpecial<<4 | bincSpNegOne)
-       } else {
-               e.encUint(bincVdNegInt<<4, false, uint64(-v))
-       }
-}
-
-func (e *bincEncDriver) EncodeUint(v uint64) {
-       e.encUint(bincVdPosInt<<4, true, v)
-}
-
-func (e *bincEncDriver) encUint(bd byte, pos bool, v uint64) {
-       if v == 0 {
-               e.w.writen1(bincVdSpecial<<4 | bincSpZero)
-       } else if pos && v >= 1 && v <= 16 {
-               e.w.writen1(bincVdSmallInt<<4 | byte(v-1))
-       } else if v <= math.MaxUint8 {
-               e.w.writen2(bd|0x0, byte(v))
-       } else if v <= math.MaxUint16 {
-               e.w.writen1(bd | 0x01)
-               bigenHelper{e.b[:2], e.w}.writeUint16(uint16(v))
-       } else if v <= math.MaxUint32 {
-               e.encIntegerPrune(bd, pos, v, 4)
-       } else {
-               e.encIntegerPrune(bd, pos, v, 8)
-       }
-}
-
-func (e *bincEncDriver) EncodeExt(rv interface{}, xtag uint64, ext Ext, _ 
*Encoder) {
-       bs := ext.WriteExt(rv)
-       if bs == nil {
-               e.EncodeNil()
-               return
-       }
-       e.encodeExtPreamble(uint8(xtag), len(bs))
-       e.w.writeb(bs)
-}
-
-func (e *bincEncDriver) EncodeRawExt(re *RawExt, _ *Encoder) {
-       e.encodeExtPreamble(uint8(re.Tag), len(re.Data))
-       e.w.writeb(re.Data)
-}
-
-func (e *bincEncDriver) encodeExtPreamble(xtag byte, length int) {
-       e.encLen(bincVdCustomExt<<4, uint64(length))
-       e.w.writen1(xtag)
-}
-
-func (e *bincEncDriver) EncodeArrayStart(length int) {
-       e.encLen(bincVdArray<<4, uint64(length))
-}
-
-func (e *bincEncDriver) EncodeMapStart(length int) {
-       e.encLen(bincVdMap<<4, uint64(length))
-}
-
-func (e *bincEncDriver) EncodeString(c charEncoding, v string) {
-       l := uint64(len(v))
-       e.encBytesLen(c, l)
-       if l > 0 {
-               e.w.writestr(v)
-       }
-}
-
-func (e *bincEncDriver) EncodeSymbol(v string) {
-       // if WriteSymbolsNoRefs {
-       //      e.encodeString(c_UTF8, v)
-       //      return
-       // }
-
-       //symbols only offer benefit when string length > 1.
-       //This is because strings with length 1 take only 2 bytes to store
-       //(bd with embedded length, and single byte for string val).
-
-       l := len(v)
-       if l == 0 {
-               e.encBytesLen(c_UTF8, 0)
-               return
-       } else if l == 1 {
-               e.encBytesLen(c_UTF8, 1)
-               e.w.writen1(v[0])
-               return
-       }
-       if e.m == nil {
-               e.m = make(map[string]uint16, 16)
-       }
-       ui, ok := e.m[v]
-       if ok {
-               if ui <= math.MaxUint8 {
-                       e.w.writen2(bincVdSymbol<<4, byte(ui))
-               } else {
-                       e.w.writen1(bincVdSymbol<<4 | 0x8)
-                       bigenHelper{e.b[:2], e.w}.writeUint16(ui)
-               }
-       } else {
-               e.s++
-               ui = e.s
-               //ui = uint16(atomic.AddUint32(&e.s, 1))
-               e.m[v] = ui
-               var lenprec uint8
-               if l <= math.MaxUint8 {
-                       // lenprec = 0
-               } else if l <= math.MaxUint16 {
-                       lenprec = 1
-               } else if int64(l) <= math.MaxUint32 {
-                       lenprec = 2
-               } else {
-                       lenprec = 3
-               }
-               if ui <= math.MaxUint8 {
-                       e.w.writen2(bincVdSymbol<<4|0x0|0x4|lenprec, byte(ui))
-               } else {
-                       e.w.writen1(bincVdSymbol<<4 | 0x8 | 0x4 | lenprec)
-                       bigenHelper{e.b[:2], e.w}.writeUint16(ui)
-               }
-               if lenprec == 0 {
-                       e.w.writen1(byte(l))
-               } else if lenprec == 1 {
-                       bigenHelper{e.b[:2], e.w}.writeUint16(uint16(l))
-               } else if lenprec == 2 {
-                       bigenHelper{e.b[:4], e.w}.writeUint32(uint32(l))
-               } else {
-                       bigenHelper{e.b[:8], e.w}.writeUint64(uint64(l))
-               }
-               e.w.writestr(v)
-       }
-}
-
-func (e *bincEncDriver) EncodeStringBytes(c charEncoding, v []byte) {
-       l := uint64(len(v))
-       e.encBytesLen(c, l)
-       if l > 0 {
-               e.w.writeb(v)
-       }
-}
-
-func (e *bincEncDriver) encBytesLen(c charEncoding, length uint64) {
-       //TODO: support bincUnicodeOther (for now, just use string or bytearray)
-       if c == c_RAW {
-               e.encLen(bincVdByteArray<<4, length)
-       } else {
-               e.encLen(bincVdString<<4, length)
-       }
-}
-
-func (e *bincEncDriver) encLen(bd byte, l uint64) {
-       if l < 12 {
-               e.w.writen1(bd | uint8(l+4))
-       } else {
-               e.encLenNumber(bd, l)
-       }
-}
-
-func (e *bincEncDriver) encLenNumber(bd byte, v uint64) {
-       if v <= math.MaxUint8 {
-               e.w.writen2(bd, byte(v))
-       } else if v <= math.MaxUint16 {
-               e.w.writen1(bd | 0x01)
-               bigenHelper{e.b[:2], e.w}.writeUint16(uint16(v))
-       } else if v <= math.MaxUint32 {
-               e.w.writen1(bd | 0x02)
-               bigenHelper{e.b[:4], e.w}.writeUint32(uint32(v))
-       } else {
-               e.w.writen1(bd | 0x03)
-               bigenHelper{e.b[:8], e.w}.writeUint64(uint64(v))
-       }
-}
-
-//------------------------------------
-
-type bincDecSymbol struct {
-       s string
-       b []byte
-       i uint16
-}
-
-type bincDecDriver struct {
-       d      *Decoder
-       h      *BincHandle
-       r      decReader
-       br     bool // bytes reader
-       bdRead bool
-       bd     byte
-       vd     byte
-       vs     byte
-       noStreamingCodec
-       decNoSeparator
-       b [scratchByteArrayLen]byte
-
-       // linear searching on this slice is ok,
-       // because we typically expect < 32 symbols in each stream.
-       s []bincDecSymbol
-}
-
-func (d *bincDecDriver) readNextBd() {
-       d.bd = d.r.readn1()
-       d.vd = d.bd >> 4
-       d.vs = d.bd & 0x0f
-       d.bdRead = true
-}
-
-func (d *bincDecDriver) uncacheRead() {
-       if d.bdRead {
-               d.r.unreadn1()
-               d.bdRead = false
-       }
-}
-
-func (d *bincDecDriver) ContainerType() (vt valueType) {
-       if d.vd == bincVdSpecial && d.vs == bincSpNil {
-               return valueTypeNil
-       } else if d.vd == bincVdByteArray {
-               return valueTypeBytes
-       } else if d.vd == bincVdString {
-               return valueTypeString
-       } else if d.vd == bincVdArray {
-               return valueTypeArray
-       } else if d.vd == bincVdMap {
-               return valueTypeMap
-       } else {
-               // d.d.errorf("isContainerType: unsupported parameter: %v", vt)
-       }
-       return valueTypeUnset
-}
-
-func (d *bincDecDriver) TryDecodeAsNil() bool {
-       if !d.bdRead {
-               d.readNextBd()
-       }
-       if d.bd == bincVdSpecial<<4|bincSpNil {
-               d.bdRead = false
-               return true
-       }
-       return false
-}
-
-func (d *bincDecDriver) IsBuiltinType(rt uintptr) bool {
-       return rt == timeTypId
-}
-
-func (d *bincDecDriver) DecodeBuiltin(rt uintptr, v interface{}) {
-       if !d.bdRead {
-               d.readNextBd()
-       }
-       if rt == timeTypId {
-               if d.vd != bincVdTimestamp {
-                       d.d.errorf("Invalid d.vd. Expecting 0x%x. Received: 
0x%x", bincVdTimestamp, d.vd)
-                       return
-               }
-               tt, err := decodeTime(d.r.readx(int(d.vs)))
-               if err != nil {
-                       panic(err)
-               }
-               var vt *time.Time = v.(*time.Time)
-               *vt = tt
-               d.bdRead = false
-       }
-}
-
-func (d *bincDecDriver) decFloatPre(vs, defaultLen byte) {
-       if vs&0x8 == 0 {
-               d.r.readb(d.b[0:defaultLen])
-       } else {
-               l := d.r.readn1()
-               if l > 8 {
-                       d.d.errorf("At most 8 bytes used to represent float. 
Received: %v bytes", l)
-                       return
-               }
-               for i := l; i < 8; i++ {
-                       d.b[i] = 0
-               }
-               d.r.readb(d.b[0:l])
-       }
-}
-
-func (d *bincDecDriver) decFloat() (f float64) {
-       //if true { f = math.Float64frombits(bigen.Uint64(d.r.readx(8))); 
break; }
-       if x := d.vs & 0x7; x == bincFlBin32 {
-               d.decFloatPre(d.vs, 4)
-               f = float64(math.Float32frombits(bigen.Uint32(d.b[0:4])))
-       } else if x == bincFlBin64 {
-               d.decFloatPre(d.vs, 8)
-               f = math.Float64frombits(bigen.Uint64(d.b[0:8]))
-       } else {
-               d.d.errorf("only float32 and float64 are supported. d.vd: 0x%x, 
d.vs: 0x%x", d.vd, d.vs)
-               return
-       }
-       return
-}
-
-func (d *bincDecDriver) decUint() (v uint64) {
-       // need to inline the code (interface conversion and type assertion 
expensive)
-       switch d.vs {
-       case 0:
-               v = uint64(d.r.readn1())
-       case 1:
-               d.r.readb(d.b[6:8])
-               v = uint64(bigen.Uint16(d.b[6:8]))
-       case 2:
-               d.b[4] = 0
-               d.r.readb(d.b[5:8])
-               v = uint64(bigen.Uint32(d.b[4:8]))
-       case 3:
-               d.r.readb(d.b[4:8])
-               v = uint64(bigen.Uint32(d.b[4:8]))
-       case 4, 5, 6:
-               lim := int(7 - d.vs)
-               d.r.readb(d.b[lim:8])
-               for i := 0; i < lim; i++ {
-                       d.b[i] = 0
-               }
-               v = uint64(bigen.Uint64(d.b[:8]))
-       case 7:
-               d.r.readb(d.b[:8])
-               v = uint64(bigen.Uint64(d.b[:8]))
-       default:
-               d.d.errorf("unsigned integers with greater than 64 bits of 
precision not supported")
-               return
-       }
-       return
-}
-
-func (d *bincDecDriver) decCheckInteger() (ui uint64, neg bool) {
-       if !d.bdRead {
-               d.readNextBd()
-       }
-       vd, vs := d.vd, d.vs
-       if vd == bincVdPosInt {
-               ui = d.decUint()
-       } else if vd == bincVdNegInt {
-               ui = d.decUint()
-               neg = true
-       } else if vd == bincVdSmallInt {
-               ui = uint64(d.vs) + 1
-       } else if vd == bincVdSpecial {
-               if vs == bincSpZero {
-                       //i = 0
-               } else if vs == bincSpNegOne {
-                       neg = true
-                       ui = 1
-               } else {
-                       d.d.errorf("numeric decode fails for special value: 
d.vs: 0x%x", d.vs)
-                       return
-               }
-       } else {
-               d.d.errorf("number can only be decoded from uint or int values. 
d.bd: 0x%x, d.vd: 0x%x", d.bd, d.vd)
-               return
-       }
-       return
-}
-
-func (d *bincDecDriver) DecodeInt(bitsize uint8) (i int64) {
-       ui, neg := d.decCheckInteger()
-       i, overflow := chkOvf.SignedInt(ui)
-       if overflow {
-               d.d.errorf("simple: overflow converting %v to signed integer", 
ui)
-               return
-       }
-       if neg {
-               i = -i
-       }
-       if chkOvf.Int(i, bitsize) {
-               d.d.errorf("binc: overflow integer: %v", i)
-               return
-       }
-       d.bdRead = false
-       return
-}
-
-func (d *bincDecDriver) DecodeUint(bitsize uint8) (ui uint64) {
-       ui, neg := d.decCheckInteger()
-       if neg {
-               d.d.errorf("Assigning negative signed value to unsigned type")
-               return
-       }
-       if chkOvf.Uint(ui, bitsize) {
-               d.d.errorf("binc: overflow integer: %v", ui)
-               return
-       }
-       d.bdRead = false
-       return
-}
-
-func (d *bincDecDriver) DecodeFloat(chkOverflow32 bool) (f float64) {
-       if !d.bdRead {
-               d.readNextBd()
-       }
-       vd, vs := d.vd, d.vs
-       if vd == bincVdSpecial {
-               d.bdRead = false
-               if vs == bincSpNan {
-                       return math.NaN()
-               } else if vs == bincSpPosInf {
-                       return math.Inf(1)
-               } else if vs == bincSpZeroFloat || vs == bincSpZero {
-                       return
-               } else if vs == bincSpNegInf {
-                       return math.Inf(-1)
-               } else {
-                       d.d.errorf("Invalid d.vs decoding float where 
d.vd=bincVdSpecial: %v", d.vs)
-                       return
-               }
-       } else if vd == bincVdFloat {
-               f = d.decFloat()
-       } else {
-               f = float64(d.DecodeInt(64))
-       }
-       if chkOverflow32 && chkOvf.Float32(f) {
-               d.d.errorf("binc: float32 overflow: %v", f)
-               return
-       }
-       d.bdRead = false
-       return
-}
-
-// bool can be decoded from bool only (single byte).
-func (d *bincDecDriver) DecodeBool() (b bool) {
-       if !d.bdRead {
-               d.readNextBd()
-       }
-       if bd := d.bd; bd == (bincVdSpecial | bincSpFalse) {
-               // b = false
-       } else if bd == (bincVdSpecial | bincSpTrue) {
-               b = true
-       } else {
-               d.d.errorf("Invalid single-byte value for bool: %s: %x", 
msgBadDesc, d.bd)
-               return
-       }
-       d.bdRead = false
-       return
-}
-
-func (d *bincDecDriver) ReadMapStart() (length int) {
-       if d.vd != bincVdMap {
-               d.d.errorf("Invalid d.vd for map. Expecting 0x%x. Got: 0x%x", 
bincVdMap, d.vd)
-               return
-       }
-       length = d.decLen()
-       d.bdRead = false
-       return
-}
-
-func (d *bincDecDriver) ReadArrayStart() (length int) {
-       if d.vd != bincVdArray {
-               d.d.errorf("Invalid d.vd for array. Expecting 0x%x. Got: 0x%x", 
bincVdArray, d.vd)
-               return
-       }
-       length = d.decLen()
-       d.bdRead = false
-       return
-}
-
-func (d *bincDecDriver) decLen() int {
-       if d.vs > 3 {
-               return int(d.vs - 4)
-       }
-       return int(d.decLenNumber())
-}
-
-func (d *bincDecDriver) decLenNumber() (v uint64) {
-       if x := d.vs; x == 0 {
-               v = uint64(d.r.readn1())
-       } else if x == 1 {
-               d.r.readb(d.b[6:8])
-               v = uint64(bigen.Uint16(d.b[6:8]))
-       } else if x == 2 {
-               d.r.readb(d.b[4:8])
-               v = uint64(bigen.Uint32(d.b[4:8]))
-       } else {
-               d.r.readb(d.b[:8])
-               v = bigen.Uint64(d.b[:8])
-       }
-       return
-}
-
-func (d *bincDecDriver) decStringAndBytes(bs []byte, withString, zerocopy 
bool) (bs2 []byte, s string) {
-       if !d.bdRead {
-               d.readNextBd()
-       }
-       if d.bd == bincVdSpecial<<4|bincSpNil {
-               d.bdRead = false
-               return
-       }
-       var slen int = -1
-       // var ok bool
-       switch d.vd {
-       case bincVdString, bincVdByteArray:
-               slen = d.decLen()
-               if zerocopy {
-                       if d.br {
-                               bs2 = d.r.readx(slen)
-                       } else if len(bs) == 0 {
-                               bs2 = decByteSlice(d.r, slen, d.d.h.MaxInitLen, 
d.b[:])
-                       } else {
-                               bs2 = decByteSlice(d.r, slen, d.d.h.MaxInitLen, 
bs)
-                       }
-               } else {
-                       bs2 = decByteSlice(d.r, slen, d.d.h.MaxInitLen, bs)
-               }
-               if withString {
-                       s = string(bs2)
-               }
-       case bincVdSymbol:
-               // zerocopy doesn't apply for symbols,
-               // as the values must be stored in a table for later use.
-               //
-               //from vs: extract numSymbolBytes, containsStringVal, 
strLenPrecision,
-               //extract symbol
-               //if containsStringVal, read it and put in map
-               //else look in map for string value
-               var symbol uint16
-               vs := d.vs
-               if vs&0x8 == 0 {
-                       symbol = uint16(d.r.readn1())
-               } else {
-                       symbol = uint16(bigen.Uint16(d.r.readx(2)))
-               }
-               if d.s == nil {
-                       d.s = make([]bincDecSymbol, 0, 16)
-               }
-
-               if vs&0x4 == 0 {
-                       for i := range d.s {
-                               j := &d.s[i]
-                               if j.i == symbol {
-                                       bs2 = j.b
-                                       if withString {
-                                               if j.s == "" && bs2 != nil {
-                                                       j.s = string(bs2)
-                                               }
-                                               s = j.s
-                                       }
-                                       break
-                               }
-                       }
-               } else {
-                       switch vs & 0x3 {
-                       case 0:
-                               slen = int(d.r.readn1())
-                       case 1:
-                               slen = int(bigen.Uint16(d.r.readx(2)))
-                       case 2:
-                               slen = int(bigen.Uint32(d.r.readx(4)))
-                       case 3:
-                               slen = int(bigen.Uint64(d.r.readx(8)))
-                       }
-                       // since using symbols, do not store any part of
-                       // the parameter bs in the map, as it might be a shared 
buffer.
-                       // bs2 = decByteSlice(d.r, slen, bs)
-                       bs2 = decByteSlice(d.r, slen, d.d.h.MaxInitLen, nil)
-                       if withString {
-                               s = string(bs2)
-                       }
-                       d.s = append(d.s, bincDecSymbol{i: symbol, s: s, b: 
bs2})
-               }
-       default:
-               d.d.errorf("Invalid d.vd. Expecting string:0x%x, bytearray:0x%x 
or symbol: 0x%x. Got: 0x%x",
-                       bincVdString, bincVdByteArray, bincVdSymbol, d.vd)
-               return
-       }
-       d.bdRead = false
-       return
-}
-
-func (d *bincDecDriver) DecodeString() (s string) {
-       // DecodeBytes does not accommodate symbols, whose impl stores string 
version in map.
-       // Use decStringAndBytes directly.
-       // return string(d.DecodeBytes(d.b[:], true, true))
-       _, s = d.decStringAndBytes(d.b[:], true, true)
-       return
-}
-
-func (d *bincDecDriver) DecodeBytes(bs []byte, isstring, zerocopy bool) (bsOut 
[]byte) {
-       if isstring {
-               bsOut, _ = d.decStringAndBytes(bs, false, zerocopy)
-               return
-       }
-       if !d.bdRead {
-               d.readNextBd()
-       }
-       if d.bd == bincVdSpecial<<4|bincSpNil {
-               d.bdRead = false
-               return nil
-       }
-       var clen int
-       if d.vd == bincVdString || d.vd == bincVdByteArray {
-               clen = d.decLen()
-       } else {
-               d.d.errorf("Invalid d.vd for bytes. Expecting string:0x%x or 
bytearray:0x%x. Got: 0x%x",
-                       bincVdString, bincVdByteArray, d.vd)
-               return
-       }
-       d.bdRead = false
-       if zerocopy {
-               if d.br {
-                       return d.r.readx(clen)
-               } else if len(bs) == 0 {
-                       bs = d.b[:]
-               }
-       }
-       return decByteSlice(d.r, clen, d.d.h.MaxInitLen, bs)
-}
-
-func (d *bincDecDriver) DecodeExt(rv interface{}, xtag uint64, ext Ext) 
(realxtag uint64) {
-       if xtag > 0xff {
-               d.d.errorf("decodeExt: tag must be <= 0xff; got: %v", xtag)
-               return
-       }
-       realxtag1, xbs := d.decodeExtV(ext != nil, uint8(xtag))
-       realxtag = uint64(realxtag1)
-       if ext == nil {
-               re := rv.(*RawExt)
-               re.Tag = realxtag
-               re.Data = detachZeroCopyBytes(d.br, re.Data, xbs)
-       } else {
-               ext.ReadExt(rv, xbs)
-       }
-       return
-}
-
-func (d *bincDecDriver) decodeExtV(verifyTag bool, tag byte) (xtag byte, xbs 
[]byte) {
-       if !d.bdRead {
-               d.readNextBd()
-       }
-       if d.vd == bincVdCustomExt {
-               l := d.decLen()
-               xtag = d.r.readn1()
-               if verifyTag && xtag != tag {
-                       d.d.errorf("Wrong extension tag. Got %b. Expecting: 
%v", xtag, tag)
-                       return
-               }
-               xbs = d.r.readx(l)
-       } else if d.vd == bincVdByteArray {
-               xbs = d.DecodeBytes(nil, false, true)
-       } else {
-               d.d.errorf("Invalid d.vd for extensions (Expecting extensions 
or byte array). Got: 0x%x", d.vd)
-               return
-       }
-       d.bdRead = false
-       return
-}
-
-func (d *bincDecDriver) DecodeNaked() {
-       if !d.bdRead {
-               d.readNextBd()
-       }
-
-       n := &d.d.n
-       var decodeFurther bool
-
-       switch d.vd {
-       case bincVdSpecial:
-               switch d.vs {
-               case bincSpNil:
-                       n.v = valueTypeNil
-               case bincSpFalse:
-                       n.v = valueTypeBool
-                       n.b = false
-               case bincSpTrue:
-                       n.v = valueTypeBool
-                       n.b = true
-               case bincSpNan:
-                       n.v = valueTypeFloat
-                       n.f = math.NaN()
-               case bincSpPosInf:
-                       n.v = valueTypeFloat
-                       n.f = math.Inf(1)
-               case bincSpNegInf:
-                       n.v = valueTypeFloat
-                       n.f = math.Inf(-1)
-               case bincSpZeroFloat:
-                       n.v = valueTypeFloat
-                       n.f = float64(0)
-               case bincSpZero:
-                       n.v = valueTypeUint
-                       n.u = uint64(0) // int8(0)
-               case bincSpNegOne:
-                       n.v = valueTypeInt
-                       n.i = int64(-1) // int8(-1)
-               default:
-                       d.d.errorf("decodeNaked: Unrecognized special value 
0x%x", d.vs)
-               }
-       case bincVdSmallInt:
-               n.v = valueTypeUint
-               n.u = uint64(int8(d.vs)) + 1 // int8(d.vs) + 1
-       case bincVdPosInt:
-               n.v = valueTypeUint
-               n.u = d.decUint()
-       case bincVdNegInt:
-               n.v = valueTypeInt
-               n.i = -(int64(d.decUint()))
-       case bincVdFloat:
-               n.v = valueTypeFloat
-               n.f = d.decFloat()
-       case bincVdSymbol:
-               n.v = valueTypeSymbol
-               n.s = d.DecodeString()
-       case bincVdString:
-               n.v = valueTypeString
-               n.s = d.DecodeString()
-       case bincVdByteArray:
-               n.v = valueTypeBytes
-               n.l = d.DecodeBytes(nil, false, false)
-       case bincVdTimestamp:
-               n.v = valueTypeTimestamp
-               tt, err := decodeTime(d.r.readx(int(d.vs)))
-               if err != nil {
-                       panic(err)
-               }
-               n.t = tt
-       case bincVdCustomExt:
-               n.v = valueTypeExt
-               l := d.decLen()
-               n.u = uint64(d.r.readn1())
-               n.l = d.r.readx(l)
-       case bincVdArray:
-               n.v = valueTypeArray
-               decodeFurther = true
-       case bincVdMap:
-               n.v = valueTypeMap
-               decodeFurther = true
-       default:
-               d.d.errorf("decodeNaked: Unrecognized d.vd: 0x%x", d.vd)
-       }
-
-       if !decodeFurther {
-               d.bdRead = false
-       }
-       if n.v == valueTypeUint && d.h.SignedInteger {
-               n.v = valueTypeInt
-               n.i = int64(n.u)
-       }
-       return
-}
-
-//------------------------------------
-
-//BincHandle is a Handle for the Binc Schema-Free Encoding Format
-//defined at https://github.com/ugorji/binc .
-//
-//BincHandle currently supports all Binc features with the following 
EXCEPTIONS:
-//  - only integers up to 64 bits of precision are supported.
-//    big integers are unsupported.
-//  - Only IEEE 754 binary32 and binary64 floats are supported (ie Go float32 
and float64 types).
-//    extended precision and decimal IEEE 754 floats are unsupported.
-//  - Only UTF-8 strings supported.
-//    Unicode_Other Binc types (UTF16, UTF32) are currently unsupported.
-//
-//Note that these EXCEPTIONS are temporary and full support is possible and 
may happen soon.
-type BincHandle struct {
-       BasicHandle
-       binaryEncodingType
-}
-
-func (h *BincHandle) SetBytesExt(rt reflect.Type, tag uint64, ext BytesExt) 
(err error) {
-       return h.SetExt(rt, tag, &setExtWrapper{b: ext})
-}
-
-func (h *BincHandle) newEncDriver(e *Encoder) encDriver {
-       return &bincEncDriver{e: e, w: e.w}
-}
-
-func (h *BincHandle) newDecDriver(d *Decoder) decDriver {
-       return &bincDecDriver{d: d, r: d.r, h: h, br: d.bytes}
-}
-
-func (e *bincEncDriver) reset() {
-       e.w = e.e.w
-       e.s = 0
-       e.m = nil
-}
-
-func (d *bincDecDriver) reset() {
-       d.r = d.d.r
-       d.s = nil
-       d.bd, d.bdRead, d.vd, d.vs = 0, false, 0, 0
-}
-
-var _ decDriver = (*bincDecDriver)(nil)
-var _ encDriver = (*bincEncDriver)(nil)

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newtmgr/blob/9975ef7a/newtmgr/vendor/github.com/ugorji/go/codec/cbor.go
----------------------------------------------------------------------
diff --git a/newtmgr/vendor/github.com/ugorji/go/codec/cbor.go 
b/newtmgr/vendor/github.com/ugorji/go/codec/cbor.go
deleted file mode 100644
index c87e3f4..0000000
--- a/newtmgr/vendor/github.com/ugorji/go/codec/cbor.go
+++ /dev/null
@@ -1,592 +0,0 @@
-// Copyright (c) 2012-2015 Ugorji Nwoke. All rights reserved.
-// Use of this source code is governed by a MIT license found in the LICENSE 
file.
-
-package codec
-
-import (
-       "math"
-       "reflect"
-)
-
-const (
-       cborMajorUint byte = iota
-       cborMajorNegInt
-       cborMajorBytes
-       cborMajorText
-       cborMajorArray
-       cborMajorMap
-       cborMajorTag
-       cborMajorOther
-)
-
-const (
-       cborBdFalse byte = 0xf4 + iota
-       cborBdTrue
-       cborBdNil
-       cborBdUndefined
-       cborBdExt
-       cborBdFloat16
-       cborBdFloat32
-       cborBdFloat64
-)
-
-const (
-       cborBdIndefiniteBytes  byte = 0x5f
-       cborBdIndefiniteString      = 0x7f
-       cborBdIndefiniteArray       = 0x9f
-       cborBdIndefiniteMap         = 0xbf
-       cborBdBreak                 = 0xff
-)
-
-const (
-       CborStreamBytes  byte = 0x5f
-       CborStreamString      = 0x7f
-       CborStreamArray       = 0x9f
-       CborStreamMap         = 0xbf
-       CborStreamBreak       = 0xff
-)
-
-const (
-       cborBaseUint   byte = 0x00
-       cborBaseNegInt      = 0x20
-       cborBaseBytes       = 0x40
-       cborBaseString      = 0x60
-       cborBaseArray       = 0x80
-       cborBaseMap         = 0xa0
-       cborBaseTag         = 0xc0
-       cborBaseSimple      = 0xe0
-)
-
-// -------------------
-
-type cborEncDriver struct {
-       noBuiltInTypes
-       encNoSeparator
-       e *Encoder
-       w encWriter
-       h *CborHandle
-       x [8]byte
-}
-
-func (e *cborEncDriver) EncodeNil() {
-       e.w.writen1(cborBdNil)
-}
-
-func (e *cborEncDriver) EncodeBool(b bool) {
-       if b {
-               e.w.writen1(cborBdTrue)
-       } else {
-               e.w.writen1(cborBdFalse)
-       }
-}
-
-func (e *cborEncDriver) EncodeFloat32(f float32) {
-       e.w.writen1(cborBdFloat32)
-       bigenHelper{e.x[:4], e.w}.writeUint32(math.Float32bits(f))
-}
-
-func (e *cborEncDriver) EncodeFloat64(f float64) {
-       e.w.writen1(cborBdFloat64)
-       bigenHelper{e.x[:8], e.w}.writeUint64(math.Float64bits(f))
-}
-
-func (e *cborEncDriver) encUint(v uint64, bd byte) {
-       if v <= 0x17 {
-               e.w.writen1(byte(v) + bd)
-       } else if v <= math.MaxUint8 {
-               e.w.writen2(bd+0x18, uint8(v))
-       } else if v <= math.MaxUint16 {
-               e.w.writen1(bd + 0x19)
-               bigenHelper{e.x[:2], e.w}.writeUint16(uint16(v))
-       } else if v <= math.MaxUint32 {
-               e.w.writen1(bd + 0x1a)
-               bigenHelper{e.x[:4], e.w}.writeUint32(uint32(v))
-       } else { // if v <= math.MaxUint64 {
-               e.w.writen1(bd + 0x1b)
-               bigenHelper{e.x[:8], e.w}.writeUint64(v)
-       }
-}
-
-func (e *cborEncDriver) EncodeInt(v int64) {
-       if v < 0 {
-               e.encUint(uint64(-1-v), cborBaseNegInt)
-       } else {
-               e.encUint(uint64(v), cborBaseUint)
-       }
-}
-
-func (e *cborEncDriver) EncodeUint(v uint64) {
-       e.encUint(v, cborBaseUint)
-}
-
-func (e *cborEncDriver) encLen(bd byte, length int) {
-       e.encUint(uint64(length), bd)
-}
-
-func (e *cborEncDriver) EncodeExt(rv interface{}, xtag uint64, ext Ext, en 
*Encoder) {
-       e.encUint(uint64(xtag), cborBaseTag)
-       if v := ext.ConvertExt(rv); v == nil {
-               e.EncodeNil()
-       } else {
-               en.encode(v)
-       }
-}
-
-func (e *cborEncDriver) EncodeRawExt(re *RawExt, en *Encoder) {
-       e.encUint(uint64(re.Tag), cborBaseTag)
-       if re.Data != nil {
-               en.encode(re.Data)
-       } else if re.Value == nil {
-               e.EncodeNil()
-       } else {
-               en.encode(re.Value)
-       }
-}
-
-func (e *cborEncDriver) EncodeArrayStart(length int) {
-       e.encLen(cborBaseArray, length)
-}
-
-func (e *cborEncDriver) EncodeMapStart(length int) {
-       e.encLen(cborBaseMap, length)
-}
-
-func (e *cborEncDriver) EncodeString(c charEncoding, v string) {
-       e.encLen(cborBaseString, len(v))
-       e.w.writestr(v)
-}
-
-func (e *cborEncDriver) EncodeSymbol(v string) {
-       e.EncodeString(c_UTF8, v)
-}
-
-func (e *cborEncDriver) EncodeStringBytes(c charEncoding, v []byte) {
-       if c == c_RAW {
-               e.encLen(cborBaseBytes, len(v))
-       } else {
-               e.encLen(cborBaseString, len(v))
-       }
-       e.w.writeb(v)
-}
-
-// ----------------------
-
-type cborDecDriver struct {
-       d      *Decoder
-       h      *CborHandle
-       r      decReader
-       b      [scratchByteArrayLen]byte
-       br     bool // bytes reader
-       bdRead bool
-       bd     byte
-       noBuiltInTypes
-       decNoSeparator
-}
-
-func (d *cborDecDriver) readNextBd() {
-       d.bd = d.r.readn1()
-       d.bdRead = true
-}
-
-func (d *cborDecDriver) uncacheRead() {
-       if d.bdRead {
-               d.r.unreadn1()
-               d.bdRead = false
-       }
-}
-
-func (d *cborDecDriver) ContainerType() (vt valueType) {
-       if d.bd == cborBdNil {
-               return valueTypeNil
-       } else if d.bd == cborBdIndefiniteBytes || (d.bd >= cborBaseBytes && 
d.bd < cborBaseString) {
-               return valueTypeBytes
-       } else if d.bd == cborBdIndefiniteString || (d.bd >= cborBaseString && 
d.bd < cborBaseArray) {
-               return valueTypeString
-       } else if d.bd == cborBdIndefiniteArray || (d.bd >= cborBaseArray && 
d.bd < cborBaseMap) {
-               return valueTypeArray
-       } else if d.bd == cborBdIndefiniteMap || (d.bd >= cborBaseMap && d.bd < 
cborBaseTag) {
-               return valueTypeMap
-       } else {
-               // d.d.errorf("isContainerType: unsupported parameter: %v", vt)
-       }
-       return valueTypeUnset
-}
-
-func (d *cborDecDriver) TryDecodeAsNil() bool {
-       if !d.bdRead {
-               d.readNextBd()
-       }
-       // treat Nil and Undefined as nil values
-       if d.bd == cborBdNil || d.bd == cborBdUndefined {
-               d.bdRead = false
-               return true
-       }
-       return false
-}
-
-func (d *cborDecDriver) CheckBreak() bool {
-       if !d.bdRead {
-               d.readNextBd()
-       }
-       if d.bd == cborBdBreak {
-               d.bdRead = false
-               return true
-       }
-       return false
-}
-
-func (d *cborDecDriver) decUint() (ui uint64) {
-       v := d.bd & 0x1f
-       if v <= 0x17 {
-               ui = uint64(v)
-       } else {
-               if v == 0x18 {
-                       ui = uint64(d.r.readn1())
-               } else if v == 0x19 {
-                       ui = uint64(bigen.Uint16(d.r.readx(2)))
-               } else if v == 0x1a {
-                       ui = uint64(bigen.Uint32(d.r.readx(4)))
-               } else if v == 0x1b {
-                       ui = uint64(bigen.Uint64(d.r.readx(8)))
-               } else {
-                       d.d.errorf("decUint: Invalid descriptor: %v", d.bd)
-                       return
-               }
-       }
-       return
-}
-
-func (d *cborDecDriver) decCheckInteger() (neg bool) {
-       if !d.bdRead {
-               d.readNextBd()
-       }
-       major := d.bd >> 5
-       if major == cborMajorUint {
-       } else if major == cborMajorNegInt {
-               neg = true
-       } else {
-               d.d.errorf("invalid major: %v (bd: %v)", major, d.bd)
-               return
-       }
-       return
-}
-
-func (d *cborDecDriver) DecodeInt(bitsize uint8) (i int64) {
-       neg := d.decCheckInteger()
-       ui := d.decUint()
-       // check if this number can be converted to an int without overflow
-       var overflow bool
-       if neg {
-               if i, overflow = chkOvf.SignedInt(ui + 1); overflow {
-                       d.d.errorf("cbor: overflow converting %v to signed 
integer", ui+1)
-                       return
-               }
-               i = -i
-       } else {
-               if i, overflow = chkOvf.SignedInt(ui); overflow {
-                       d.d.errorf("cbor: overflow converting %v to signed 
integer", ui)
-                       return
-               }
-       }
-       if chkOvf.Int(i, bitsize) {
-               d.d.errorf("cbor: overflow integer: %v", i)
-               return
-       }
-       d.bdRead = false
-       return
-}
-
-func (d *cborDecDriver) DecodeUint(bitsize uint8) (ui uint64) {
-       if d.decCheckInteger() {
-               d.d.errorf("Assigning negative signed value to unsigned type")
-               return
-       }
-       ui = d.decUint()
-       if chkOvf.Uint(ui, bitsize) {
-               d.d.errorf("cbor: overflow integer: %v", ui)
-               return
-       }
-       d.bdRead = false
-       return
-}
-
-func (d *cborDecDriver) DecodeFloat(chkOverflow32 bool) (f float64) {
-       if !d.bdRead {
-               d.readNextBd()
-       }
-       if bd := d.bd; bd == cborBdFloat16 {
-               f = 
float64(math.Float32frombits(halfFloatToFloatBits(bigen.Uint16(d.r.readx(2)))))
-       } else if bd == cborBdFloat32 {
-               f = float64(math.Float32frombits(bigen.Uint32(d.r.readx(4))))
-       } else if bd == cborBdFloat64 {
-               f = math.Float64frombits(bigen.Uint64(d.r.readx(8)))
-       } else if bd >= cborBaseUint && bd < cborBaseBytes {
-               f = float64(d.DecodeInt(64))
-       } else {
-               d.d.errorf("Float only valid from float16/32/64: Invalid 
descriptor: %v", bd)
-               return
-       }
-       if chkOverflow32 && chkOvf.Float32(f) {
-               d.d.errorf("cbor: float32 overflow: %v", f)
-               return
-       }
-       d.bdRead = false
-       return
-}
-
-// bool can be decoded from bool only (single byte).
-func (d *cborDecDriver) DecodeBool() (b bool) {
-       if !d.bdRead {
-               d.readNextBd()
-       }
-       if bd := d.bd; bd == cborBdTrue {
-               b = true
-       } else if bd == cborBdFalse {
-       } else {
-               d.d.errorf("Invalid single-byte value for bool: %s: %x", 
msgBadDesc, d.bd)
-               return
-       }
-       d.bdRead = false
-       return
-}
-
-func (d *cborDecDriver) ReadMapStart() (length int) {
-       d.bdRead = false
-       if d.bd == cborBdIndefiniteMap {
-               return -1
-       }
-       return d.decLen()
-}
-
-func (d *cborDecDriver) ReadArrayStart() (length int) {
-       d.bdRead = false
-       if d.bd == cborBdIndefiniteArray {
-               return -1
-       }
-       return d.decLen()
-}
-
-func (d *cborDecDriver) decLen() int {
-       return int(d.decUint())
-}
-
-func (d *cborDecDriver) decAppendIndefiniteBytes(bs []byte) []byte {
-       d.bdRead = false
-       for {
-               if d.CheckBreak() {
-                       break
-               }
-               if major := d.bd >> 5; major != cborMajorBytes && major != 
cborMajorText {
-                       d.d.errorf("cbor: expect bytes or string major type in 
indefinite string/bytes; got: %v, byte: %v", major, d.bd)
-                       return nil
-               }
-               n := d.decLen()
-               oldLen := len(bs)
-               newLen := oldLen + n
-               if newLen > cap(bs) {
-                       bs2 := make([]byte, newLen, 2*cap(bs)+n)
-                       copy(bs2, bs)
-                       bs = bs2
-               } else {
-                       bs = bs[:newLen]
-               }
-               d.r.readb(bs[oldLen:newLen])
-               // bs = append(bs, d.r.readn()...)
-               d.bdRead = false
-       }
-       d.bdRead = false
-       return bs
-}
-
-func (d *cborDecDriver) DecodeBytes(bs []byte, isstring, zerocopy bool) (bsOut 
[]byte) {
-       if !d.bdRead {
-               d.readNextBd()
-       }
-       if d.bd == cborBdNil || d.bd == cborBdUndefined {
-               d.bdRead = false
-               return nil
-       }
-       if d.bd == cborBdIndefiniteBytes || d.bd == cborBdIndefiniteString {
-               if bs == nil {
-                       return d.decAppendIndefiniteBytes(nil)
-               }
-               return d.decAppendIndefiniteBytes(bs[:0])
-       }
-       clen := d.decLen()
-       d.bdRead = false
-       if zerocopy {
-               if d.br {
-                       return d.r.readx(clen)
-               } else if len(bs) == 0 {
-                       bs = d.b[:]
-               }
-       }
-       return decByteSlice(d.r, clen, d.d.h.MaxInitLen, bs)
-}
-
-func (d *cborDecDriver) DecodeString() (s string) {
-       return string(d.DecodeBytes(d.b[:], true, true))
-}
-
-func (d *cborDecDriver) DecodeExt(rv interface{}, xtag uint64, ext Ext) 
(realxtag uint64) {
-       if !d.bdRead {
-               d.readNextBd()
-       }
-       u := d.decUint()
-       d.bdRead = false
-       realxtag = u
-       if ext == nil {
-               re := rv.(*RawExt)
-               re.Tag = realxtag
-               d.d.decode(&re.Value)
-       } else if xtag != realxtag {
-               d.d.errorf("Wrong extension tag. Got %b. Expecting: %v", 
realxtag, xtag)
-               return
-       } else {
-               var v interface{}
-               d.d.decode(&v)
-               ext.UpdateExt(rv, v)
-       }
-       d.bdRead = false
-       return
-}
-
-func (d *cborDecDriver) DecodeNaked() {
-       if !d.bdRead {
-               d.readNextBd()
-       }
-
-       n := &d.d.n
-       var decodeFurther bool
-
-       switch d.bd {
-       case cborBdNil:
-               n.v = valueTypeNil
-       case cborBdFalse:
-               n.v = valueTypeBool
-               n.b = false
-       case cborBdTrue:
-               n.v = valueTypeBool
-               n.b = true
-       case cborBdFloat16, cborBdFloat32:
-               n.v = valueTypeFloat
-               n.f = d.DecodeFloat(true)
-       case cborBdFloat64:
-               n.v = valueTypeFloat
-               n.f = d.DecodeFloat(false)
-       case cborBdIndefiniteBytes:
-               n.v = valueTypeBytes
-               n.l = d.DecodeBytes(nil, false, false)
-       case cborBdIndefiniteString:
-               n.v = valueTypeString
-               n.s = d.DecodeString()
-       case cborBdIndefiniteArray:
-               n.v = valueTypeArray
-               decodeFurther = true
-       case cborBdIndefiniteMap:
-               n.v = valueTypeMap
-               decodeFurther = true
-       default:
-               switch {
-               case d.bd >= cborBaseUint && d.bd < cborBaseNegInt:
-                       if d.h.SignedInteger {
-                               n.v = valueTypeInt
-                               n.i = d.DecodeInt(64)
-                       } else {
-                               n.v = valueTypeUint
-                               n.u = d.DecodeUint(64)
-                       }
-               case d.bd >= cborBaseNegInt && d.bd < cborBaseBytes:
-                       n.v = valueTypeInt
-                       n.i = d.DecodeInt(64)
-               case d.bd >= cborBaseBytes && d.bd < cborBaseString:
-                       n.v = valueTypeBytes
-                       n.l = d.DecodeBytes(nil, false, false)
-               case d.bd >= cborBaseString && d.bd < cborBaseArray:
-                       n.v = valueTypeString
-                       n.s = d.DecodeString()
-               case d.bd >= cborBaseArray && d.bd < cborBaseMap:
-                       n.v = valueTypeArray
-                       decodeFurther = true
-               case d.bd >= cborBaseMap && d.bd < cborBaseTag:
-                       n.v = valueTypeMap
-                       decodeFurther = true
-               case d.bd >= cborBaseTag && d.bd < cborBaseSimple:
-                       n.v = valueTypeExt
-                       n.u = d.decUint()
-                       n.l = nil
-                       // d.bdRead = false
-                       // d.d.decode(&re.Value) // handled by decode itself.
-                       // decodeFurther = true
-               default:
-                       d.d.errorf("decodeNaked: Unrecognized d.bd: 0x%x", d.bd)
-                       return
-               }
-       }
-
-       if !decodeFurther {
-               d.bdRead = false
-       }
-       return
-}
-
-// -------------------------
-
-// CborHandle is a Handle for the CBOR encoding format,
-// defined at http://tools.ietf.org/html/rfc7049 and documented further at 
http://cbor.io .
-//
-// CBOR is comprehensively supported, including support for:
-//   - indefinite-length arrays/maps/bytes/strings
-//   - (extension) tags in range 0..0xffff (0 .. 65535)
-//   - half, single and double-precision floats
-//   - all numbers (1, 2, 4 and 8-byte signed and unsigned integers)
-//   - nil, true, false, ...
-//   - arrays and maps, bytes and text strings
-//
-// None of the optional extensions (with tags) defined in the spec are 
supported out-of-the-box.
-// Users can implement them as needed (using SetExt), including 
spec-documented ones:
-//   - timestamp, BigNum, BigFloat, Decimals, Encoded Text (e.g. URL, regexp, 
base64, MIME Message), etc.
-//
-// To encode with indefinite lengths (streaming), users will use
-// (Must)Encode methods of *Encoder, along with writing CborStreamXXX 
constants.
-//
-// For example, to encode "one-byte" as an indefinite length string:
-//     var buf bytes.Buffer
-//     e := NewEncoder(&buf, new(CborHandle))
-//     buf.WriteByte(CborStreamString)
-//     e.MustEncode("one-")
-//     e.MustEncode("byte")
-//     buf.WriteByte(CborStreamBreak)
-//     encodedBytes := buf.Bytes()
-//     var vv interface{}
-//     NewDecoderBytes(buf.Bytes(), new(CborHandle)).MustDecode(&vv)
-//     // Now, vv contains the same string "one-byte"
-//
-type CborHandle struct {
-       binaryEncodingType
-       BasicHandle
-}
-
-func (h *CborHandle) SetInterfaceExt(rt reflect.Type, tag uint64, ext 
InterfaceExt) (err error) {
-       return h.SetExt(rt, tag, &setExtWrapper{i: ext})
-}
-
-func (h *CborHandle) newEncDriver(e *Encoder) encDriver {
-       return &cborEncDriver{e: e, w: e.w, h: h}
-}
-
-func (h *CborHandle) newDecDriver(d *Decoder) decDriver {
-       return &cborDecDriver{d: d, r: d.r, h: h, br: d.bytes}
-}
-
-func (e *cborEncDriver) reset() {
-       e.w = e.e.w
-}
-
-func (d *cborDecDriver) reset() {
-       d.r = d.d.r
-       d.bd, d.bdRead = 0, false
-}
-
-var _ decDriver = (*cborDecDriver)(nil)
-var _ encDriver = (*cborEncDriver)(nil)


Reply via email to