package keys
import (
)
type Value struct {
name string
description string
}
func (, string) *Value {
return &Value{name: , description: }
}
func ( *Value) () string { return .name }
func ( *Value) () string { return .description }
func ( *Value) ( io.Writer, []byte, label.Label) {
fmt.Fprint(, .From())
}
func ( *Value) ( label.Map) interface{} {
if := .Find(); .Valid() {
return .From()
}
return nil
}
func ( *Value) ( label.Label) interface{} { return .UnpackValue() }
func ( *Value) ( interface{}) label.Label { return label.OfValue(, ) }
type Tag struct {
name string
description string
}
func (, string) *Tag {
return &Tag{name: , description: }
}
func ( *Tag) () string { return .name }
func ( *Tag) () string { return .description }
func ( *Tag) ( io.Writer, []byte, label.Label) {}
func ( *Tag) () label.Label { return label.OfValue(, nil) }
type Int struct {
name string
description string
}
func (, string) *Int {
return &Int{name: , description: }
}
func ( *Int) () string { return .name }
func ( *Int) () string { return .description }
func ( *Int) ( io.Writer, []byte, label.Label) {
.Write(strconv.AppendInt(, int64(.From()), 10))
}
func ( *Int) ( int) label.Label { return label.Of64(, uint64()) }
func ( *Int) ( label.Map) int {
if := .Find(); .Valid() {
return .From()
}
return 0
}
func ( *Int) ( label.Label) int { return int(.Unpack64()) }
type Int8 struct {
name string
description string
}
func (, string) *Int8 {
return &Int8{name: , description: }
}
func ( *Int8) () string { return .name }
func ( *Int8) () string { return .description }
func ( *Int8) ( io.Writer, []byte, label.Label) {
.Write(strconv.AppendInt(, int64(.From()), 10))
}
func ( *Int8) ( int8) label.Label { return label.Of64(, uint64()) }
func ( *Int8) ( label.Map) int8 {
if := .Find(); .Valid() {
return .From()
}
return 0
}
func ( *Int8) ( label.Label) int8 { return int8(.Unpack64()) }
type Int16 struct {
name string
description string
}
func (, string) *Int16 {
return &Int16{name: , description: }
}
func ( *Int16) () string { return .name }
func ( *Int16) () string { return .description }
func ( *Int16) ( io.Writer, []byte, label.Label) {
.Write(strconv.AppendInt(, int64(.From()), 10))
}
func ( *Int16) ( int16) label.Label { return label.Of64(, uint64()) }
func ( *Int16) ( label.Map) int16 {
if := .Find(); .Valid() {
return .From()
}
return 0
}
func ( *Int16) ( label.Label) int16 { return int16(.Unpack64()) }
type Int32 struct {
name string
description string
}
func (, string) *Int32 {
return &Int32{name: , description: }
}
func ( *Int32) () string { return .name }
func ( *Int32) () string { return .description }
func ( *Int32) ( io.Writer, []byte, label.Label) {
.Write(strconv.AppendInt(, int64(.From()), 10))
}
func ( *Int32) ( int32) label.Label { return label.Of64(, uint64()) }
func ( *Int32) ( label.Map) int32 {
if := .Find(); .Valid() {
return .From()
}
return 0
}
func ( *Int32) ( label.Label) int32 { return int32(.Unpack64()) }
type Int64 struct {
name string
description string
}
func (, string) *Int64 {
return &Int64{name: , description: }
}
func ( *Int64) () string { return .name }
func ( *Int64) () string { return .description }
func ( *Int64) ( io.Writer, []byte, label.Label) {
.Write(strconv.AppendInt(, .From(), 10))
}
func ( *Int64) ( int64) label.Label { return label.Of64(, uint64()) }
func ( *Int64) ( label.Map) int64 {
if := .Find(); .Valid() {
return .From()
}
return 0
}
func ( *Int64) ( label.Label) int64 { return int64(.Unpack64()) }
type UInt struct {
name string
description string
}
func (, string) *UInt {
return &UInt{name: , description: }
}
func ( *UInt) () string { return .name }
func ( *UInt) () string { return .description }
func ( *UInt) ( io.Writer, []byte, label.Label) {
.Write(strconv.AppendUint(, uint64(.From()), 10))
}
func ( *UInt) ( uint) label.Label { return label.Of64(, uint64()) }
func ( *UInt) ( label.Map) uint {
if := .Find(); .Valid() {
return .From()
}
return 0
}
func ( *UInt) ( label.Label) uint { return uint(.Unpack64()) }
type UInt8 struct {
name string
description string
}
func (, string) *UInt8 {
return &UInt8{name: , description: }
}
func ( *UInt8) () string { return .name }
func ( *UInt8) () string { return .description }
func ( *UInt8) ( io.Writer, []byte, label.Label) {
.Write(strconv.AppendUint(, uint64(.From()), 10))
}
func ( *UInt8) ( uint8) label.Label { return label.Of64(, uint64()) }
func ( *UInt8) ( label.Map) uint8 {
if := .Find(); .Valid() {
return .From()
}
return 0
}
func ( *UInt8) ( label.Label) uint8 { return uint8(.Unpack64()) }
type UInt16 struct {
name string
description string
}
func (, string) *UInt16 {
return &UInt16{name: , description: }
}
func ( *UInt16) () string { return .name }
func ( *UInt16) () string { return .description }
func ( *UInt16) ( io.Writer, []byte, label.Label) {
.Write(strconv.AppendUint(, uint64(.From()), 10))
}
func ( *UInt16) ( uint16) label.Label { return label.Of64(, uint64()) }
func ( *UInt16) ( label.Map) uint16 {
if := .Find(); .Valid() {
return .From()
}
return 0
}
func ( *UInt16) ( label.Label) uint16 { return uint16(.Unpack64()) }
type UInt32 struct {
name string
description string
}
func (, string) *UInt32 {
return &UInt32{name: , description: }
}
func ( *UInt32) () string { return .name }
func ( *UInt32) () string { return .description }
func ( *UInt32) ( io.Writer, []byte, label.Label) {
.Write(strconv.AppendUint(, uint64(.From()), 10))
}
func ( *UInt32) ( uint32) label.Label { return label.Of64(, uint64()) }
func ( *UInt32) ( label.Map) uint32 {
if := .Find(); .Valid() {
return .From()
}
return 0
}
func ( *UInt32) ( label.Label) uint32 { return uint32(.Unpack64()) }
type UInt64 struct {
name string
description string
}
func (, string) *UInt64 {
return &UInt64{name: , description: }
}
func ( *UInt64) () string { return .name }
func ( *UInt64) () string { return .description }
func ( *UInt64) ( io.Writer, []byte, label.Label) {
.Write(strconv.AppendUint(, .From(), 10))
}
func ( *UInt64) ( uint64) label.Label { return label.Of64(, ) }
func ( *UInt64) ( label.Map) uint64 {
if := .Find(); .Valid() {
return .From()
}
return 0
}
func ( *UInt64) ( label.Label) uint64 { return .Unpack64() }
type Float32 struct {
name string
description string
}
func (, string) *Float32 {
return &Float32{name: , description: }
}
func ( *Float32) () string { return .name }
func ( *Float32) () string { return .description }
func ( *Float32) ( io.Writer, []byte, label.Label) {
.Write(strconv.AppendFloat(, float64(.From()), 'E', -1, 32))
}
func ( *Float32) ( float32) label.Label {
return label.Of64(, uint64(math.Float32bits()))
}
func ( *Float32) ( label.Map) float32 {
if := .Find(); .Valid() {
return .From()
}
return 0
}
func ( *Float32) ( label.Label) float32 {
return math.Float32frombits(uint32(.Unpack64()))
}
type Float64 struct {
name string
description string
}
func (, string) *Float64 {
return &Float64{name: , description: }
}
func ( *Float64) () string { return .name }
func ( *Float64) () string { return .description }
func ( *Float64) ( io.Writer, []byte, label.Label) {
.Write(strconv.AppendFloat(, .From(), 'E', -1, 64))
}
func ( *Float64) ( float64) label.Label {
return label.Of64(, math.Float64bits())
}
func ( *Float64) ( label.Map) float64 {
if := .Find(); .Valid() {
return .From()
}
return 0
}
func ( *Float64) ( label.Label) float64 {
return math.Float64frombits(.Unpack64())
}
type String struct {
name string
description string
}
func (, string) *String {
return &String{name: , description: }
}
func ( *String) () string { return .name }
func ( *String) () string { return .description }
func ( *String) ( io.Writer, []byte, label.Label) {
.Write(strconv.AppendQuote(, .From()))
}
func ( *String) ( string) label.Label { return label.OfString(, ) }
func ( *String) ( label.Map) string {
if := .Find(); .Valid() {
return .From()
}
return ""
}
func ( *String) ( label.Label) string { return .UnpackString() }
type Boolean struct {
name string
description string
}
func (, string) *Boolean {
return &Boolean{name: , description: }
}
func ( *Boolean) () string { return .name }
func ( *Boolean) () string { return .description }
func ( *Boolean) ( io.Writer, []byte, label.Label) {
.Write(strconv.AppendBool(, .From()))
}
func ( *Boolean) ( bool) label.Label {
if {
return label.Of64(, 1)
}
return label.Of64(, 0)
}
func ( *Boolean) ( label.Map) bool {
if := .Find(); .Valid() {
return .From()
}
return false
}
func ( *Boolean) ( label.Label) bool { return .Unpack64() > 0 }
type Error struct {
name string
description string
}
func (, string) *Error {
return &Error{name: , description: }
}
func ( *Error) () string { return .name }
func ( *Error) () string { return .description }
func ( *Error) ( io.Writer, []byte, label.Label) {
io.WriteString(, .From().Error())
}
func ( *Error) ( error) label.Label { return label.OfValue(, ) }
func ( *Error) ( label.Map) error {
if := .Find(); .Valid() {
return .From()
}
return nil
}
func ( *Error) ( label.Label) error {
, := .UnpackValue().(error)
return
}