ソースを参照

codec: use maps for byte descriptor names

This helps reduce unnecessary code coverage uncovered lines.
Ugorji Nwoke 6 年 前
コミット
fe4e1f5e73
3 ファイル変更231 行追加176 行削除
  1. 76 75
      codec/binc.go
  2. 74 71
      codec/cbor.go
  3. 81 30
      codec/msgpack.go

+ 76 - 75
codec/binc.go

@@ -54,84 +54,85 @@ const (
 	// others not currently supported
 )
 
-// var (
-// 	bincdescSpecialVsNames = map[byte]string{
-// 		bincSpNil:       "nil",
-// 		bincSpFalse:     "false",
-// 		bincSpTrue:      "true",
-// 		bincSpNan:       "float",
-// 		bincSpPosInf:    "float",
-// 		bincSpNegInf:    "float",
-// 		bincSpZeroFloat: "float",
-// 		bincSpZero:      "uint",
-// 		bincSpNegOne:    "int",
-// 	}
-// 	bincdescVdNames = map[byte]string{
-// 		bincVdSpecial:   "special",
-// 		bincVdSmallInt:  "uint",
-// 		bincVdPosInt:    "uint",
-// 		bincVdFloat:     "float",
-// 		bincVdSymbol:    "string",
-// 		bincVdString:    "string",
-// 		bincVdByteArray: "bytes",
-// 		bincVdTimestamp: "time",
-// 		bincVdCustomExt: "ext",
-// 		bincVdArray:     "array",
-// 		bincVdMap:       "map",
-// 	}
-// )
+var (
+	bincdescSpecialVsNames = map[byte]string{
+		bincSpNil:       "nil",
+		bincSpFalse:     "false",
+		bincSpTrue:      "true",
+		bincSpNan:       "float",
+		bincSpPosInf:    "float",
+		bincSpNegInf:    "float",
+		bincSpZeroFloat: "float",
+		bincSpZero:      "uint",
+		bincSpNegOne:    "int",
+	}
+	bincdescVdNames = map[byte]string{
+		bincVdSpecial:   "special",
+		bincVdSmallInt:  "uint",
+		bincVdPosInt:    "uint",
+		bincVdFloat:     "float",
+		bincVdSymbol:    "string",
+		bincVdString:    "string",
+		bincVdByteArray: "bytes",
+		bincVdTimestamp: "time",
+		bincVdCustomExt: "ext",
+		bincVdArray:     "array",
+		bincVdMap:       "map",
+	}
+)
 
 func bincdesc(vd, vs byte) (s string) {
-	// s = bincdescVdNames[vd]
-	// if s == "special" {
-	// 	s = bincdescSpecialVsNames[vs]
-	// }
-	// if s == "" {
-	// 	s = "unknown"
-	// }
-	// return
-
-	switch vd {
-	case bincVdSpecial:
-		switch vs {
-		case bincSpNil:
-			return "nil"
-		case bincSpFalse:
-			return "false"
-		case bincSpTrue:
-			return "true"
-		case bincSpNan, bincSpPosInf, bincSpNegInf, bincSpZeroFloat:
-			return "float"
-		case bincSpZero:
-			return "uint"
-		case bincSpNegOne:
-			return "int"
-		default:
-			return "unknown"
-		}
-	case bincVdSmallInt, bincVdPosInt:
-		return "uint"
-	case bincVdNegInt:
-		return "int"
-	case bincVdFloat:
-		return "float"
-	case bincVdSymbol:
-		return "string"
-	case bincVdString:
-		return "string"
-	case bincVdByteArray:
-		return "bytes"
-	case bincVdTimestamp:
-		return "time"
-	case bincVdCustomExt:
-		return "ext"
-	case bincVdArray:
-		return "array"
-	case bincVdMap:
-		return "map"
-	default:
-		return "unknown"
+	if vd == bincVdSpecial {
+		s = bincdescSpecialVsNames[vs]
+	} else {
+		s = bincdescVdNames[vd]
 	}
+	if s == "" {
+		s = "unknown"
+	}
+	return
+
+	// 	switch vd {
+	// 	case bincVdSpecial:
+	// 		switch vs {
+	// 		case bincSpNil:
+	// 			return "nil"
+	// 		case bincSpFalse:
+	// 			return "false"
+	// 		case bincSpTrue:
+	// 			return "true"
+	// 		case bincSpNan, bincSpPosInf, bincSpNegInf, bincSpZeroFloat:
+	// 			return "float"
+	// 		case bincSpZero:
+	// 			return "uint"
+	// 		case bincSpNegOne:
+	// 			return "int"
+	// 		default:
+	// 			return "unknown"
+	// 		}
+	// 	case bincVdSmallInt, bincVdPosInt:
+	// 		return "uint"
+	// 	case bincVdNegInt:
+	// 		return "int"
+	// 	case bincVdFloat:
+	// 		return "float"
+	// 	case bincVdSymbol:
+	// 		return "string"
+	// 	case bincVdString:
+	// 		return "string"
+	// 	case bincVdByteArray:
+	// 		return "bytes"
+	// 	case bincVdTimestamp:
+	// 		return "time"
+	// 	case bincVdCustomExt:
+	// 		return "ext"
+	// 	case bincVdArray:
+	// 		return "array"
+	// 	case bincVdMap:
+	// 		return "map"
+	// 	default:
+	// 		return "unknown"
+	// 	}
 }
 
 type bincEncDriver struct {

+ 74 - 71
codec/cbor.go

@@ -69,81 +69,84 @@ const (
 // 	cborSelfDesrTag3 byte = 0xf7
 // )
 
-// var (
-// 	cbordescSimpleNames = map[byte]string{
-// 		cborBdNil:              "nil",
-// 		cborBdFalse:            "false",
-// 		cborBdTrue:             "true",
-// 		cborBdFloat16:          "float",
-// 		cborBdFloat32:          "float",
-// 		cborBdFloat64:          "float",
-// 		cborBdIndefiniteBytes:  "bytes*",
-// 		cborBdIndefiniteString: "string*",
-// 		cborBdIndefiniteArray:  "array*",
-// 		cborBdIndefiniteMap:    "map*",
-// 	}
-// 	cbordescMajorNames = map[byte]string{
-// 		cborMajorUint:          "(u)int",
-// 		cborMajorNegInt:        "int",
-// 		cborMajorBytes:         "bytes",
-// 		cborMajorString:        "string",
-// 		cborMajorArray:         "array",
-// 		cborMajorMap:           "map",
-// 		cborMajorTag:           "tag",
-// 		cborMajorSimpleOrFloat: "simple",
-// 	}
-// )
+var (
+	cbordescSimpleNames = map[byte]string{
+		cborBdNil:              "nil",
+		cborBdFalse:            "false",
+		cborBdTrue:             "true",
+		cborBdFloat16:          "float",
+		cborBdFloat32:          "float",
+		cborBdFloat64:          "float",
+		cborBdIndefiniteBytes:  "bytes*",
+		cborBdIndefiniteString: "string*",
+		cborBdIndefiniteArray:  "array*",
+		cborBdIndefiniteMap:    "map*",
+	}
+	cbordescMajorNames = map[byte]string{
+		cborMajorUint:          "(u)int",
+		cborMajorNegInt:        "int",
+		cborMajorBytes:         "bytes",
+		cborMajorString:        "string",
+		cborMajorArray:         "array",
+		cborMajorMap:           "map",
+		cborMajorTag:           "tag",
+		cborMajorSimpleOrFloat: "simple",
+	}
+)
 
 func cbordesc(bd byte) (s string) {
-	// s = cbordescMajorNames[bd>>5]
-	// if s == "" {
-	// 	s = "unknown"
-	// } else if s == "simple" {
-	// 	s = cbordescMajorNames[bd]
-	// 	if s == "" {
-	// 		s = "unknown(simple)"
-	// 	}
-	// }
-	// return
-
-	switch bd >> 5 {
-	case cborMajorUint:
-		return "(u)int"
-	case cborMajorNegInt:
-		return "int"
-	case cborMajorBytes:
-		return "bytes"
-	case cborMajorString:
-		return "string"
-	case cborMajorArray:
-		return "array"
-	case cborMajorMap:
-		return "map"
-	case cborMajorTag:
-		return "tag"
-	case cborMajorSimpleOrFloat: // default
-		switch bd {
-		case cborBdNil:
-			return "nil"
-		case cborBdFalse:
-			return "false"
-		case cborBdTrue:
-			return "true"
-		case cborBdFloat16, cborBdFloat32, cborBdFloat64:
-			return "float"
-		case cborBdIndefiniteBytes:
-			return "bytes*"
-		case cborBdIndefiniteString:
-			return "string*"
-		case cborBdIndefiniteArray:
-			return "array*"
-		case cborBdIndefiniteMap:
-			return "map*"
-		default:
-			return "unknown(simple)"
+	bm := bd >> 5
+	if bm == cborMajorSimpleOrFloat {
+		s = cbordescMajorNames[bd]
+		if s == "" {
+			s = "unknown(simple)"
+		}
+	} else {
+		s = cbordescMajorNames[bm]
+		if s == "" {
+			s = "unknown"
 		}
 	}
-	return "unknown"
+	return
+
+	// switch bd >> 5 {
+	// case cborMajorUint:
+	// 	return "(u)int"
+	// case cborMajorNegInt:
+	// 	return "int"
+	// case cborMajorBytes:
+	// 	return "bytes"
+	// case cborMajorString:
+	// 	return "string"
+	// case cborMajorArray:
+	// 	return "array"
+	// case cborMajorMap:
+	// 	return "map"
+	// case cborMajorTag:
+	// 	return "tag"
+	// case cborMajorSimpleOrFloat: // default
+	// 	switch bd {
+	// 	case cborBdNil:
+	// 		return "nil"
+	// 	case cborBdFalse:
+	// 		return "false"
+	// 	case cborBdTrue:
+	// 		return "true"
+	// 	case cborBdFloat16, cborBdFloat32, cborBdFloat64:
+	// 		return "float"
+	// 	case cborBdIndefiniteBytes:
+	// 		return "bytes*"
+	// 	case cborBdIndefiniteString:
+	// 		return "string*"
+	// 	case cborBdIndefiniteArray:
+	// 		return "array*"
+	// 	case cborBdIndefiniteMap:
+	// 		return "map*"
+	// 	default:
+	// 		return "unknown(simple)"
+	// 	}
+	// }
+	// return "unknown"
 }
 
 // -------------------

+ 81 - 30
codec/msgpack.go

@@ -123,40 +123,91 @@ var mpTimeExtTagU = uint8(mpTimeExtTag)
 // 	mpNegFixNumMax: "NegFixNumMax",
 // }
 
-func mpdesc(bd byte) string {
-	switch bd {
-	case mpNil:
-		return "nil"
-	case mpFalse:
-		return "false"
-	case mpTrue:
-		return "true"
-	case mpFloat, mpDouble:
-		return "float"
-	case mpUint8, mpUint16, mpUint32, mpUint64:
-		return "uint"
-	case mpInt8, mpInt16, mpInt32, mpInt64:
-		return "int"
-	default:
+var mpdescNames = map[byte]string{
+	mpNil:    "nil",
+	mpFalse:  "false",
+	mpTrue:   "true",
+	mpFloat:  "float",
+	mpDouble: "float",
+	mpUint8:  "uuint",
+	mpUint16: "uint",
+	mpUint32: "uint",
+	mpUint64: "uint",
+	mpInt8:   "int",
+	mpInt16:  "int",
+	mpInt32:  "int",
+	mpInt64:  "int",
+
+	mpStr8:  "string|bytes",
+	mpStr16: "string|bytes",
+	mpStr32: "string|bytes",
+
+	mpBin8:  "bytes",
+	mpBin16: "bytes",
+	mpBin32: "bytes",
+
+	mpArray16: "array",
+	mpArray32: "array",
+
+	mpMap16: "map",
+	mpMap32: "map",
+}
+
+func mpdesc(bd byte) (s string) {
+	s = mpdescNames[bd]
+	if s == "" {
 		switch {
-		case bd >= mpPosFixNumMin && bd <= mpPosFixNumMax:
-			return "int"
-		case bd >= mpNegFixNumMin && bd <= mpNegFixNumMax:
-			return "int"
-		case bd == mpStr8, bd == mpStr16, bd == mpStr32, bd >= mpFixStrMin && bd <= mpFixStrMax:
-			return "string|bytes"
-		case bd == mpBin8, bd == mpBin16, bd == mpBin32:
-			return "bytes"
-		case bd == mpArray16, bd == mpArray32, bd >= mpFixArrayMin && bd <= mpFixArrayMax:
-			return "array"
-		case bd == mpMap16, bd == mpMap32, bd >= mpFixMapMin && bd <= mpFixMapMax:
-			return "map"
-		case bd >= mpFixExt1 && bd <= mpFixExt16, bd >= mpExt8 && bd <= mpExt32:
-			return "ext"
+		case bd >= mpPosFixNumMin && bd <= mpPosFixNumMax,
+			bd >= mpNegFixNumMin && bd <= mpNegFixNumMax:
+			s = "int"
+		case bd >= mpFixStrMin && bd <= mpFixStrMax:
+			s = "string|bytes"
+		case bd >= mpFixArrayMin && bd <= mpFixArrayMax:
+			s = "array"
+		case bd >= mpFixMapMin && bd <= mpFixMapMax:
+			s = "map"
+		case bd >= mpFixExt1 && bd <= mpFixExt16,
+			bd >= mpExt8 && bd <= mpExt32:
+			s = "ext"
 		default:
-			return "unknown"
+			s = "unknown"
 		}
 	}
+	return
+
+	// switch bd {
+	// case mpNil:
+	// 	return "nil"
+	// case mpFalse:
+	// 	return "false"
+	// case mpTrue:
+	// 	return "true"
+	// case mpFloat, mpDouble:
+	// 	return "float"
+	// case mpUint8, mpUint16, mpUint32, mpUint64:
+	// 	return "uint"
+	// case mpInt8, mpInt16, mpInt32, mpInt64:
+	// 	return "int"
+	// default:
+	// 	switch {
+	// 	case bd >= mpPosFixNumMin && bd <= mpPosFixNumMax:
+	// 		return "int"
+	// 	case bd >= mpNegFixNumMin && bd <= mpNegFixNumMax:
+	// 		return "int"
+	// 	case bd == mpStr8, bd == mpStr16, bd == mpStr32, bd >= mpFixStrMin && bd <= mpFixStrMax:
+	// 		return "string|bytes"
+	// 	case bd == mpBin8, bd == mpBin16, bd == mpBin32:
+	// 		return "bytes"
+	// 	case bd == mpArray16, bd == mpArray32, bd >= mpFixArrayMin && bd <= mpFixArrayMax:
+	// 		return "array"
+	// 	case bd == mpMap16, bd == mpMap32, bd >= mpFixMapMin && bd <= mpFixMapMax:
+	// 		return "map"
+	// 	case bd >= mpFixExt1 && bd <= mpFixExt16, bd >= mpExt8 && bd <= mpExt32:
+	// 		return "ext"
+	// 	default:
+	// 		return "unknown"
+	// 	}
+	// }
 }
 
 // MsgpackSpecRpcMultiArgs is a special type which signifies to the MsgpackSpecRpcCodec