...
1 package xgb
2
3
12
13 import (
14 "fmt"
15 "strings"
16 )
17
18
19
20 func StringsJoin(ss []string, sep string) string {
21 return strings.Join(ss, sep)
22 }
23
24
25 func Sprintf(format string, v ...interface{}) string {
26 return fmt.Sprintf(format, v...)
27 }
28
29
30
31 func Errorf(format string, v ...interface{}) error {
32 return fmt.Errorf(format, v...)
33 }
34
35
36 func Pad(n int) int {
37 return (n + 3) & ^3
38 }
39
40
41 func PopCount(mask0 int) int {
42 mask := uint32(mask0)
43 n := 0
44 for i := uint32(0); i < 32; i++ {
45 if mask&(1<<i) != 0 {
46 n++
47 }
48 }
49 return n
50 }
51
52
53 func Put16(buf []byte, v uint16) {
54 buf[0] = byte(v)
55 buf[1] = byte(v >> 8)
56 }
57
58
59 func Put32(buf []byte, v uint32) {
60 buf[0] = byte(v)
61 buf[1] = byte(v >> 8)
62 buf[2] = byte(v >> 16)
63 buf[3] = byte(v >> 24)
64 }
65
66
67 func Put64(buf []byte, v uint64) {
68 buf[0] = byte(v)
69 buf[1] = byte(v >> 8)
70 buf[2] = byte(v >> 16)
71 buf[3] = byte(v >> 24)
72 buf[4] = byte(v >> 32)
73 buf[5] = byte(v >> 40)
74 buf[6] = byte(v >> 48)
75 buf[7] = byte(v >> 56)
76 }
77
78
79 func Get16(buf []byte) uint16 {
80 v := uint16(buf[0])
81 v |= uint16(buf[1]) << 8
82 return v
83 }
84
85
86 func Get32(buf []byte) uint32 {
87 v := uint32(buf[0])
88 v |= uint32(buf[1]) << 8
89 v |= uint32(buf[2]) << 16
90 v |= uint32(buf[3]) << 24
91 return v
92 }
93
94
95 func Get64(buf []byte) uint64 {
96 v := uint64(buf[0])
97 v |= uint64(buf[1]) << 8
98 v |= uint64(buf[2]) << 16
99 v |= uint64(buf[3]) << 24
100 v |= uint64(buf[4]) << 32
101 v |= uint64(buf[5]) << 40
102 v |= uint64(buf[6]) << 48
103 v |= uint64(buf[7]) << 56
104 return v
105 }
106
View as plain text