package value

import (
	"time"
)

// nolint: gochecknoglobals
var (
	Empty = &empty{}
)

func IsEmpty(v Value) bool {
	return v == Empty
}

type empty struct{}

func (e *empty) Append(string) error {
	return ErrAppendEmpty
}

func (e *empty) String() string {
	return ""
}

func (e *empty) Int() int {
	return 0
}

func (e *empty) Int64() int64 {
	return 0
}

func (e *empty) Uint() uint {
	return 0
}

func (e *empty) Uint64() uint64 {
	return 0
}

func (e *empty) Float64() float64 {
	return 0
}

func (e *empty) Bool() bool {
	return false
}

func (e *empty) Duration() time.Duration {
	return 0
}

func (e *empty) Time() time.Time {
	return time.Time{}
}

func (e *empty) Strings() []string {
	return nil
}

func (e *empty) Ints() []int {
	return nil
}

func (e *empty) Int64s() []int64 {
	return nil
}

func (e *empty) Uints() []uint {
	return nil
}

func (e *empty) Uint64s() []uint64 {
	return nil
}

func (e *empty) Float64s() []float64 {
	return nil
}

func (e *empty) Bools() []bool {
	return nil
}

func (e *empty) Durations() []time.Duration {
	return nil
}

func (e *empty) Times() []time.Time {
	return nil
}

func (e *empty) Any() interface{} {
	return nil
}
