Browse Source

codec: Added MustEncode and MustDecode methods to allow user trap panic in library.

Ugorji Nwoke 11 years ago
parent
commit
207f8b5ab9
2 changed files with 14 additions and 1 deletions
  1. 7 1
      codec/decode.go
  2. 7 0
      codec/encode.go

+ 7 - 1
codec/decode.go

@@ -612,6 +612,12 @@ func (d *Decoder) Decode(v interface{}) (err error) {
 	return
 	return
 }
 }
 
 
+// MustDecode is like Decode, but panics if unable to Decode.
+// This provides insight to the code location that triggered the error.
+func (d *Decoder) MustDecode(v interface{}) {
+	d.decode(v)
+}
+
 func (d *Decoder) decode(iv interface{}) {
 func (d *Decoder) decode(iv interface{}) {
 	d.d.initReadNext()
 	d.d.initReadNext()
 
 
@@ -651,7 +657,7 @@ func (d *Decoder) decode(iv interface{}) {
 		*v = float32(d.d.decodeFloat(true))
 		*v = float32(d.d.decodeFloat(true))
 	case *float64:
 	case *float64:
 		*v = d.d.decodeFloat(false)
 		*v = d.d.decodeFloat(false)
-	case *[]byte:
+	case *[]uint8:
 		*v, _ = d.d.decodeBytes(*v)
 		*v, _ = d.d.decodeBytes(*v)
 
 
 	case *interface{}:
 	case *interface{}:

+ 7 - 0
codec/encode.go

@@ -692,6 +692,13 @@ func (e *Encoder) Encode(v interface{}) (err error) {
 	return
 	return
 }
 }
 
 
+// MustEncode is like Encode, but panics if unable to Encode.
+// This provides insight to the code location that triggered the error.
+func (e *Encoder) MustEncode(v interface{}) {
+	e.encode(v)
+	e.w.atEndOfEncode()
+}
+
 func (e *Encoder) encode(iv interface{}) {
 func (e *Encoder) encode(iv interface{}) {
 	switch v := iv.(type) {
 	switch v := iv.(type) {
 	case nil:
 	case nil: