12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- // generated by gotemplate
- package opt
- import (
- "fmt"
- "github.com/mailru/easyjson/jlexer"
- "github.com/mailru/easyjson/jwriter"
- )
- // template type Optional(A)
- // A 'gotemplate'-based type for providing optional semantics without using pointers.
- type Int64 struct {
- V int64
- Defined bool
- }
- // Creates an optional type with a given value.
- func OInt64(v int64) Int64 {
- return Int64{V: v, Defined: true}
- }
- // Get returns the value or given default in the case the value is undefined.
- func (v Int64) Get(deflt int64) int64 {
- if !v.Defined {
- return deflt
- }
- return v.V
- }
- // MarshalEasyJSON does JSON marshaling using easyjson interface.
- func (v Int64) MarshalEasyJSON(w *jwriter.Writer) {
- if v.Defined {
- w.Int64(v.V)
- } else {
- w.RawString("null")
- }
- }
- // UnmarshalEasyJSON does JSON unmarshaling using easyjson interface.
- func (v *Int64) UnmarshalEasyJSON(l *jlexer.Lexer) {
- if l.IsNull() {
- l.Skip()
- *v = Int64{}
- } else {
- v.V = l.Int64()
- v.Defined = true
- }
- }
- // MarshalJSON implements a standard json marshaler interface.
- func (v Int64) MarshalJSON() ([]byte, error) {
- w := jwriter.Writer{}
- v.MarshalEasyJSON(&w)
- return w.Buffer.BuildBytes(), w.Error
- }
- // UnmarshalJSON implements a standard json unmarshaler interface.
- func (v *Int64) UnmarshalJSON(data []byte) error {
- l := jlexer.Lexer{Data: data}
- v.UnmarshalEasyJSON(&l)
- return l.Error()
- }
- // IsDefined returns whether the value is defined, a function is required so that it can
- // be used in an interface.
- func (v Int64) IsDefined() bool {
- return v.Defined
- }
- // String implements a stringer interface using fmt.Sprint for the value.
- func (v Int64) String() string {
- if !v.Defined {
- return "<undefined>"
- }
- return fmt.Sprint(v.V)
- }
|