From 463bdc838f2b35e9307e91d480878bda5fff7232 Mon Sep 17 00:00:00 2001 From: spf13 Date: Fri, 11 Jul 2014 10:25:27 -0400 Subject: Adding Type() method to the values. --- bool.go | 4 ++++ duration.go | 4 ++++ flag.go | 1 + float32.go | 4 ++++ float64.go | 4 ++++ int.go | 4 ++++ int32.go | 4 ++++ int64.go | 4 ++++ int8.go | 4 ++++ ip.go | 4 ++++ ipmask.go | 4 ++++ string.go | 3 +++ uint.go | 4 ++++ uint16.go | 5 +++++ uint32.go | 4 ++++ uint64.go | 4 ++++ uint8.go | 4 ++++ 17 files changed, 65 insertions(+) diff --git a/bool.go b/bool.go index 60beb54..010576c 100644 --- a/bool.go +++ b/bool.go @@ -19,6 +19,10 @@ func (b *boolValue) Set(s string) error { return err } +func (b *boolValue) Type() string { + return "bool" +} + func (b *boolValue) String() string { return fmt.Sprintf("%v", *b) } // BoolVar defines a bool flag with specified name, default value, and usage string. diff --git a/duration.go b/duration.go index db8bfd5..66ed7ac 100644 --- a/duration.go +++ b/duration.go @@ -16,6 +16,10 @@ func (d *durationValue) Set(s string) error { return err } +func (d *durationValue) Type() string { + return "duration" +} + func (d *durationValue) String() string { return (*time.Duration)(d).String() } // DurationVar defines a time.Duration flag with specified name, default value, and usage string. diff --git a/flag.go b/flag.go index dfc03d2..47761a0 100644 --- a/flag.go +++ b/flag.go @@ -154,6 +154,7 @@ type Flag struct { type Value interface { String() string Set(string) error + Type() string } // sortFlags returns the flags as a slice in lexicographical sorted order. diff --git a/float32.go b/float32.go index a0041e2..b7ad67d 100644 --- a/float32.go +++ b/float32.go @@ -19,6 +19,10 @@ func (f *float32Value) Set(s string) error { return err } +func (f *float32Value) Type() string { + return "float32" +} + func (f *float32Value) String() string { return fmt.Sprintf("%v", *f) } // Float32Var defines a float32 flag with specified name, default value, and usage string. diff --git a/float64.go b/float64.go index 8d79be0..0315512 100644 --- a/float64.go +++ b/float64.go @@ -19,6 +19,10 @@ func (f *float64Value) Set(s string) error { return err } +func (f *float64Value) Type() string { + return "float64" +} + func (f *float64Value) String() string { return fmt.Sprintf("%v", *f) } // Float64Var defines a float64 flag with specified name, default value, and usage string. diff --git a/int.go b/int.go index cb85e14..dca9da6 100644 --- a/int.go +++ b/int.go @@ -19,6 +19,10 @@ func (i *intValue) Set(s string) error { return err } +func (i *intValue) Type() string { + return "int" +} + func (i *intValue) String() string { return fmt.Sprintf("%v", *i) } // IntVar defines an int flag with specified name, default value, and usage string. diff --git a/int32.go b/int32.go index 2e1a317..18eaacd 100644 --- a/int32.go +++ b/int32.go @@ -19,6 +19,10 @@ func (i *int32Value) Set(s string) error { return err } +func (i *int32Value) Type() string { + return "int32" +} + func (i *int32Value) String() string { return fmt.Sprintf("%v", *i) } // Int32Var defines an int32 flag with specified name, default value, and usage string. diff --git a/int64.go b/int64.go index 43aeced..0114aaa 100644 --- a/int64.go +++ b/int64.go @@ -19,6 +19,10 @@ func (i *int64Value) Set(s string) error { return err } +func (i *int64Value) Type() string { + return "int64" +} + func (i *int64Value) String() string { return fmt.Sprintf("%v", *i) } // Int64Var defines an int64 flag with specified name, default value, and usage string. diff --git a/int8.go b/int8.go index 539c4eb..aab1022 100644 --- a/int8.go +++ b/int8.go @@ -19,6 +19,10 @@ func (i *int8Value) Set(s string) error { return err } +func (i *int8Value) Type() string { + return "int8" +} + func (i *int8Value) String() string { return fmt.Sprintf("%v", *i) } // Int8Var defines an int8 flag with specified name, default value, and usage string. diff --git a/ip.go b/ip.go index 3a411fc..9d53bd3 100644 --- a/ip.go +++ b/ip.go @@ -26,6 +26,10 @@ func (i *ipValue) Get() interface{} { return net.IP(*i) } +func (i *ipValue) Type() string { + return "ip" +} + // IPVar defines an net.IP flag with specified name, default value, and usage string. // The argument p points to an net.IP variable in which to store the value of the flag. func (f *FlagSet) IPVar(p *net.IP, name string, value net.IP, usage string) { diff --git a/ipmask.go b/ipmask.go index b8a164a..6f85be9 100644 --- a/ipmask.go +++ b/ipmask.go @@ -26,6 +26,10 @@ func (i *ipMaskValue) Get() interface{} { return net.IPMask(*i) } +func (i *ipMaskValue) Type() string { + return "ipMask" +} + // Parse IPv4 netmask written in IP form (e.g. 255.255.255.0). // This function should really belong to the net package. func ParseIPv4Mask(s string) net.IPMask { diff --git a/string.go b/string.go index 65c0cb7..362fbf8 100644 --- a/string.go +++ b/string.go @@ -14,6 +14,9 @@ func (s *stringValue) Set(val string) error { *s = stringValue(val) return nil } +func (s *stringValue) Type() string { + return "string" +} func (s *stringValue) String() string { return fmt.Sprintf("%s", *s) } diff --git a/uint.go b/uint.go index 40b9ebb..c063fe7 100644 --- a/uint.go +++ b/uint.go @@ -19,6 +19,10 @@ func (i *uintValue) Set(s string) error { return err } +func (i *uintValue) Type() string { + return "uint" +} + func (i *uintValue) String() string { return fmt.Sprintf("%v", *i) } // UintVar defines a uint flag with specified name, default value, and usage string. diff --git a/uint16.go b/uint16.go index 182dc40..ec14ab0 100644 --- a/uint16.go +++ b/uint16.go @@ -18,10 +18,15 @@ func (i *uint16Value) Set(s string) error { *i = uint16Value(v) return err } + func (i *uint16Value) Get() interface{} { return uint16(*i) } +func (i *uint16Value) Type() string { + return "uint16" +} + // Uint16Var defines a uint flag with specified name, default value, and usage string. // The argument p points to a uint variable in which to store the value of the flag. func (f *FlagSet) Uint16Var(p *uint16, name string, value uint16, usage string) { diff --git a/uint32.go b/uint32.go index 165c8b2..05bc3bd 100644 --- a/uint32.go +++ b/uint32.go @@ -22,6 +22,10 @@ func (i *uint32Value) Get() interface{} { return uint32(*i) } +func (i *uint32Value) Type() string { + return "uint32" +} + // Uint32Var defines a uint32 flag with specified name, default value, and usage string. // The argument p points to a uint32 variable in which to store the value of the flag. func (f *FlagSet) Uint32Var(p *uint32, name string, value uint32, usage string) { diff --git a/uint64.go b/uint64.go index f41c5a2..99c7e80 100644 --- a/uint64.go +++ b/uint64.go @@ -19,6 +19,10 @@ func (i *uint64Value) Set(s string) error { return err } +func (i *uint64Value) Type() string { + return "uint64" +} + func (i *uint64Value) String() string { return fmt.Sprintf("%v", *i) } // Uint64Var defines a uint64 flag with specified name, default value, and usage string. diff --git a/uint8.go b/uint8.go index 174f99c..6fef508 100644 --- a/uint8.go +++ b/uint8.go @@ -19,6 +19,10 @@ func (i *uint8Value) Set(s string) error { return err } +func (i *uint8Value) Type() string { + return "uint8" +} + func (i *uint8Value) String() string { return fmt.Sprintf("%v", *i) } // Uint8Var defines a uint8 flag with specified name, default value, and usage string. -- cgit v1.2.3