1
2
3
4
5 package keys
6
7 import (
8 "fmt"
9 "io"
10 "math"
11 "strconv"
12
13 "golang.org/x/tools/internal/event/label"
14 )
15
16
17 type Value struct {
18 name string
19 description string
20 }
21
22
23 func New(name, description string) *Value {
24 return &Value{name: name, description: description}
25 }
26
27 func (k *Value) Name() string { return k.name }
28 func (k *Value) Description() string { return k.description }
29
30 func (k *Value) Format(w io.Writer, buf []byte, l label.Label) {
31 fmt.Fprint(w, k.From(l))
32 }
33
34
35 func (k *Value) Get(lm label.Map) interface{} {
36 if t := lm.Find(k); t.Valid() {
37 return k.From(t)
38 }
39 return nil
40 }
41
42
43 func (k *Value) From(t label.Label) interface{} { return t.UnpackValue() }
44
45
46 func (k *Value) Of(value interface{}) label.Label { return label.OfValue(k, value) }
47
48
49
50
51
52 type Tag struct {
53 name string
54 description string
55 }
56
57
58 func NewTag(name, description string) *Tag {
59 return &Tag{name: name, description: description}
60 }
61
62 func (k *Tag) Name() string { return k.name }
63 func (k *Tag) Description() string { return k.description }
64
65 func (k *Tag) Format(w io.Writer, buf []byte, l label.Label) {}
66
67
68 func (k *Tag) New() label.Label { return label.OfValue(k, nil) }
69
70
71 type Int struct {
72 name string
73 description string
74 }
75
76
77 func NewInt(name, description string) *Int {
78 return &Int{name: name, description: description}
79 }
80
81 func (k *Int) Name() string { return k.name }
82 func (k *Int) Description() string { return k.description }
83
84 func (k *Int) Format(w io.Writer, buf []byte, l label.Label) {
85 w.Write(strconv.AppendInt(buf, int64(k.From(l)), 10))
86 }
87
88
89 func (k *Int) Of(v int) label.Label { return label.Of64(k, uint64(v)) }
90
91
92 func (k *Int) Get(lm label.Map) int {
93 if t := lm.Find(k); t.Valid() {
94 return k.From(t)
95 }
96 return 0
97 }
98
99
100 func (k *Int) From(t label.Label) int { return int(t.Unpack64()) }
101
102
103 type Int8 struct {
104 name string
105 description string
106 }
107
108
109 func NewInt8(name, description string) *Int8 {
110 return &Int8{name: name, description: description}
111 }
112
113 func (k *Int8) Name() string { return k.name }
114 func (k *Int8) Description() string { return k.description }
115
116 func (k *Int8) Format(w io.Writer, buf []byte, l label.Label) {
117 w.Write(strconv.AppendInt(buf, int64(k.From(l)), 10))
118 }
119
120
121 func (k *Int8) Of(v int8) label.Label { return label.Of64(k, uint64(v)) }
122
123
124 func (k *Int8) Get(lm label.Map) int8 {
125 if t := lm.Find(k); t.Valid() {
126 return k.From(t)
127 }
128 return 0
129 }
130
131
132 func (k *Int8) From(t label.Label) int8 { return int8(t.Unpack64()) }
133
134
135 type Int16 struct {
136 name string
137 description string
138 }
139
140
141 func NewInt16(name, description string) *Int16 {
142 return &Int16{name: name, description: description}
143 }
144
145 func (k *Int16) Name() string { return k.name }
146 func (k *Int16) Description() string { return k.description }
147
148 func (k *Int16) Format(w io.Writer, buf []byte, l label.Label) {
149 w.Write(strconv.AppendInt(buf, int64(k.From(l)), 10))
150 }
151
152
153 func (k *Int16) Of(v int16) label.Label { return label.Of64(k, uint64(v)) }
154
155
156 func (k *Int16) Get(lm label.Map) int16 {
157 if t := lm.Find(k); t.Valid() {
158 return k.From(t)
159 }
160 return 0
161 }
162
163
164 func (k *Int16) From(t label.Label) int16 { return int16(t.Unpack64()) }
165
166
167 type Int32 struct {
168 name string
169 description string
170 }
171
172
173 func NewInt32(name, description string) *Int32 {
174 return &Int32{name: name, description: description}
175 }
176
177 func (k *Int32) Name() string { return k.name }
178 func (k *Int32) Description() string { return k.description }
179
180 func (k *Int32) Format(w io.Writer, buf []byte, l label.Label) {
181 w.Write(strconv.AppendInt(buf, int64(k.From(l)), 10))
182 }
183
184
185 func (k *Int32) Of(v int32) label.Label { return label.Of64(k, uint64(v)) }
186
187
188 func (k *Int32) Get(lm label.Map) int32 {
189 if t := lm.Find(k); t.Valid() {
190 return k.From(t)
191 }
192 return 0
193 }
194
195
196 func (k *Int32) From(t label.Label) int32 { return int32(t.Unpack64()) }
197
198
199 type Int64 struct {
200 name string
201 description string
202 }
203
204
205 func NewInt64(name, description string) *Int64 {
206 return &Int64{name: name, description: description}
207 }
208
209 func (k *Int64) Name() string { return k.name }
210 func (k *Int64) Description() string { return k.description }
211
212 func (k *Int64) Format(w io.Writer, buf []byte, l label.Label) {
213 w.Write(strconv.AppendInt(buf, k.From(l), 10))
214 }
215
216
217 func (k *Int64) Of(v int64) label.Label { return label.Of64(k, uint64(v)) }
218
219
220 func (k *Int64) Get(lm label.Map) int64 {
221 if t := lm.Find(k); t.Valid() {
222 return k.From(t)
223 }
224 return 0
225 }
226
227
228 func (k *Int64) From(t label.Label) int64 { return int64(t.Unpack64()) }
229
230
231 type UInt struct {
232 name string
233 description string
234 }
235
236
237 func NewUInt(name, description string) *UInt {
238 return &UInt{name: name, description: description}
239 }
240
241 func (k *UInt) Name() string { return k.name }
242 func (k *UInt) Description() string { return k.description }
243
244 func (k *UInt) Format(w io.Writer, buf []byte, l label.Label) {
245 w.Write(strconv.AppendUint(buf, uint64(k.From(l)), 10))
246 }
247
248
249 func (k *UInt) Of(v uint) label.Label { return label.Of64(k, uint64(v)) }
250
251
252 func (k *UInt) Get(lm label.Map) uint {
253 if t := lm.Find(k); t.Valid() {
254 return k.From(t)
255 }
256 return 0
257 }
258
259
260 func (k *UInt) From(t label.Label) uint { return uint(t.Unpack64()) }
261
262
263 type UInt8 struct {
264 name string
265 description string
266 }
267
268
269 func NewUInt8(name, description string) *UInt8 {
270 return &UInt8{name: name, description: description}
271 }
272
273 func (k *UInt8) Name() string { return k.name }
274 func (k *UInt8) Description() string { return k.description }
275
276 func (k *UInt8) Format(w io.Writer, buf []byte, l label.Label) {
277 w.Write(strconv.AppendUint(buf, uint64(k.From(l)), 10))
278 }
279
280
281 func (k *UInt8) Of(v uint8) label.Label { return label.Of64(k, uint64(v)) }
282
283
284 func (k *UInt8) Get(lm label.Map) uint8 {
285 if t := lm.Find(k); t.Valid() {
286 return k.From(t)
287 }
288 return 0
289 }
290
291
292 func (k *UInt8) From(t label.Label) uint8 { return uint8(t.Unpack64()) }
293
294
295 type UInt16 struct {
296 name string
297 description string
298 }
299
300
301 func NewUInt16(name, description string) *UInt16 {
302 return &UInt16{name: name, description: description}
303 }
304
305 func (k *UInt16) Name() string { return k.name }
306 func (k *UInt16) Description() string { return k.description }
307
308 func (k *UInt16) Format(w io.Writer, buf []byte, l label.Label) {
309 w.Write(strconv.AppendUint(buf, uint64(k.From(l)), 10))
310 }
311
312
313 func (k *UInt16) Of(v uint16) label.Label { return label.Of64(k, uint64(v)) }
314
315
316 func (k *UInt16) Get(lm label.Map) uint16 {
317 if t := lm.Find(k); t.Valid() {
318 return k.From(t)
319 }
320 return 0
321 }
322
323
324 func (k *UInt16) From(t label.Label) uint16 { return uint16(t.Unpack64()) }
325
326
327 type UInt32 struct {
328 name string
329 description string
330 }
331
332
333 func NewUInt32(name, description string) *UInt32 {
334 return &UInt32{name: name, description: description}
335 }
336
337 func (k *UInt32) Name() string { return k.name }
338 func (k *UInt32) Description() string { return k.description }
339
340 func (k *UInt32) Format(w io.Writer, buf []byte, l label.Label) {
341 w.Write(strconv.AppendUint(buf, uint64(k.From(l)), 10))
342 }
343
344
345 func (k *UInt32) Of(v uint32) label.Label { return label.Of64(k, uint64(v)) }
346
347
348 func (k *UInt32) Get(lm label.Map) uint32 {
349 if t := lm.Find(k); t.Valid() {
350 return k.From(t)
351 }
352 return 0
353 }
354
355
356 func (k *UInt32) From(t label.Label) uint32 { return uint32(t.Unpack64()) }
357
358
359 type UInt64 struct {
360 name string
361 description string
362 }
363
364
365 func NewUInt64(name, description string) *UInt64 {
366 return &UInt64{name: name, description: description}
367 }
368
369 func (k *UInt64) Name() string { return k.name }
370 func (k *UInt64) Description() string { return k.description }
371
372 func (k *UInt64) Format(w io.Writer, buf []byte, l label.Label) {
373 w.Write(strconv.AppendUint(buf, k.From(l), 10))
374 }
375
376
377 func (k *UInt64) Of(v uint64) label.Label { return label.Of64(k, v) }
378
379
380 func (k *UInt64) Get(lm label.Map) uint64 {
381 if t := lm.Find(k); t.Valid() {
382 return k.From(t)
383 }
384 return 0
385 }
386
387
388 func (k *UInt64) From(t label.Label) uint64 { return t.Unpack64() }
389
390
391 type Float32 struct {
392 name string
393 description string
394 }
395
396
397 func NewFloat32(name, description string) *Float32 {
398 return &Float32{name: name, description: description}
399 }
400
401 func (k *Float32) Name() string { return k.name }
402 func (k *Float32) Description() string { return k.description }
403
404 func (k *Float32) Format(w io.Writer, buf []byte, l label.Label) {
405 w.Write(strconv.AppendFloat(buf, float64(k.From(l)), 'E', -1, 32))
406 }
407
408
409 func (k *Float32) Of(v float32) label.Label {
410 return label.Of64(k, uint64(math.Float32bits(v)))
411 }
412
413
414 func (k *Float32) Get(lm label.Map) float32 {
415 if t := lm.Find(k); t.Valid() {
416 return k.From(t)
417 }
418 return 0
419 }
420
421
422 func (k *Float32) From(t label.Label) float32 {
423 return math.Float32frombits(uint32(t.Unpack64()))
424 }
425
426
427 type Float64 struct {
428 name string
429 description string
430 }
431
432
433 func NewFloat64(name, description string) *Float64 {
434 return &Float64{name: name, description: description}
435 }
436
437 func (k *Float64) Name() string { return k.name }
438 func (k *Float64) Description() string { return k.description }
439
440 func (k *Float64) Format(w io.Writer, buf []byte, l label.Label) {
441 w.Write(strconv.AppendFloat(buf, k.From(l), 'E', -1, 64))
442 }
443
444
445 func (k *Float64) Of(v float64) label.Label {
446 return label.Of64(k, math.Float64bits(v))
447 }
448
449
450 func (k *Float64) Get(lm label.Map) float64 {
451 if t := lm.Find(k); t.Valid() {
452 return k.From(t)
453 }
454 return 0
455 }
456
457
458 func (k *Float64) From(t label.Label) float64 {
459 return math.Float64frombits(t.Unpack64())
460 }
461
462
463 type String struct {
464 name string
465 description string
466 }
467
468
469 func NewString(name, description string) *String {
470 return &String{name: name, description: description}
471 }
472
473 func (k *String) Name() string { return k.name }
474 func (k *String) Description() string { return k.description }
475
476 func (k *String) Format(w io.Writer, buf []byte, l label.Label) {
477 w.Write(strconv.AppendQuote(buf, k.From(l)))
478 }
479
480
481 func (k *String) Of(v string) label.Label { return label.OfString(k, v) }
482
483
484 func (k *String) Get(lm label.Map) string {
485 if t := lm.Find(k); t.Valid() {
486 return k.From(t)
487 }
488 return ""
489 }
490
491
492 func (k *String) From(t label.Label) string { return t.UnpackString() }
493
494
495 type Boolean struct {
496 name string
497 description string
498 }
499
500
501 func NewBoolean(name, description string) *Boolean {
502 return &Boolean{name: name, description: description}
503 }
504
505 func (k *Boolean) Name() string { return k.name }
506 func (k *Boolean) Description() string { return k.description }
507
508 func (k *Boolean) Format(w io.Writer, buf []byte, l label.Label) {
509 w.Write(strconv.AppendBool(buf, k.From(l)))
510 }
511
512
513 func (k *Boolean) Of(v bool) label.Label {
514 if v {
515 return label.Of64(k, 1)
516 }
517 return label.Of64(k, 0)
518 }
519
520
521 func (k *Boolean) Get(lm label.Map) bool {
522 if t := lm.Find(k); t.Valid() {
523 return k.From(t)
524 }
525 return false
526 }
527
528
529 func (k *Boolean) From(t label.Label) bool { return t.Unpack64() > 0 }
530
531
532 type Error struct {
533 name string
534 description string
535 }
536
537
538 func NewError(name, description string) *Error {
539 return &Error{name: name, description: description}
540 }
541
542 func (k *Error) Name() string { return k.name }
543 func (k *Error) Description() string { return k.description }
544
545 func (k *Error) Format(w io.Writer, buf []byte, l label.Label) {
546 io.WriteString(w, k.From(l).Error())
547 }
548
549
550 func (k *Error) Of(v error) label.Label { return label.OfValue(k, v) }
551
552
553 func (k *Error) Get(lm label.Map) error {
554 if t := lm.Find(k); t.Valid() {
555 return k.From(t)
556 }
557 return nil
558 }
559
560
561 func (k *Error) From(t label.Label) error {
562 err, _ := t.UnpackValue().(error)
563 return err
564 }
565
View as plain text