...
1
2
3 package opt
4
5 import (
6 "fmt"
7
8 "github.com/mailru/easyjson/jlexer"
9 "github.com/mailru/easyjson/jwriter"
10 )
11
12
13
14
15 type Uint16 struct {
16 V uint16
17 Defined bool
18 }
19
20
21 func OUint16(v uint16) Uint16 {
22 return Uint16{V: v, Defined: true}
23 }
24
25
26 func (v Uint16) Get(deflt uint16) uint16 {
27 if !v.Defined {
28 return deflt
29 }
30 return v.V
31 }
32
33
34 func (v Uint16) MarshalEasyJSON(w *jwriter.Writer) {
35 if v.Defined {
36 w.Uint16(v.V)
37 } else {
38 w.RawString("null")
39 }
40 }
41
42
43 func (v *Uint16) UnmarshalEasyJSON(l *jlexer.Lexer) {
44 if l.IsNull() {
45 l.Skip()
46 *v = Uint16{}
47 } else {
48 v.V = l.Uint16()
49 v.Defined = true
50 }
51 }
52
53
54 func (v Uint16) MarshalJSON() ([]byte, error) {
55 w := jwriter.Writer{}
56 v.MarshalEasyJSON(&w)
57 return w.Buffer.BuildBytes(), w.Error
58 }
59
60
61 func (v *Uint16) UnmarshalJSON(data []byte) error {
62 l := jlexer.Lexer{Data: data}
63 v.UnmarshalEasyJSON(&l)
64 return l.Error()
65 }
66
67
68
69 func (v Uint16) IsDefined() bool {
70 return v.Defined
71 }
72
73
74 func (v Uint16) String() string {
75 if !v.Defined {
76 return "<undefined>"
77 }
78 return fmt.Sprint(v.V)
79 }
80
View as plain text