]> Sergey Matveev's repositories - btrtrc.git/blob - bencode/misc.go
bencode: Decode singleton lists of the expected type
[btrtrc.git] / bencode / misc.go
1 package bencode
2
3 import (
4         "reflect"
5         "unsafe"
6 )
7
8 // Wow Go is retarded.
9 var marshalerType = reflect.TypeOf(func() *Marshaler {
10         var m Marshaler
11         return &m
12 }()).Elem()
13
14 // Wow Go is retarded.
15 var unmarshalerType = reflect.TypeOf(func() *Unmarshaler {
16         var i Unmarshaler
17         return &i
18 }()).Elem()
19
20 func bytesAsString(b []byte) string {
21         if len(b) == 0 {
22                 return ""
23         }
24         return *(*string)(unsafe.Pointer(&reflect.StringHeader{
25                 uintptr(unsafe.Pointer(&b[0])),
26                 len(b),
27         }))
28 }