Documentation
¶
Overview ¶
Package typeregistry implements a simple type registry.
Index ¶
- Variables
- func GetLongTypeName(i interface{}) (r string)
- type Registry
- func (r *Registry) GetInterface(name string) (interface{}, error)
- func (r *Registry) GetType(name string) (reflect.Type, error)
- func (r *Registry) GetValue(name string) (reflect.Value, error)
- func (r *Registry) Register(v interface{}) error
- func (r *Registry) RegisterNamed(name string, v interface{}) error
- func (r *Registry) RegisteredNames() []string
- func (r *Registry) Unregister(name string) error
Constants ¶
This section is empty.
Variables ¶
var ( // ErrTypeRegistry is the base typeregistry error. ErrTypeRegistry = errorex.New("typeregistry") // ErrNotFound is returned when a type was not found in the registry. ErrNotFound = ErrTypeRegistry.WrapFormat("entry '%s' not found") // ErrDuplicateEntry is returned when registering a type that is already // registered. ErrDuplicateEntry = ErrTypeRegistry.WrapFormat("entry '%s' already exists") // ErrInvalidParam is returned when an invalid parameter was passed to // a registration method. ErrInvalidParam = ErrTypeRegistry.Wrap("invalid parameter") )
Functions ¶
func GetLongTypeName ¶ added in v0.0.3
func GetLongTypeName(i interface{}) (r string)
GetLongTypeName generates a long Type name from a Go value contained in i thet is constructed of pointer dereferene token for each pointer level of i, package path if the type was not predeclared or is an alias and the type name as returned by reflect.Value.Type().String(). For example: ***Registry => "***github.com/vedranvuk/typeregistry/typeregistry.Registry".
It is used to generate a type name for values registered by this package.
Types ¶
type Registry ¶
type Registry struct {
// contains filtered or unexported fields
}
Registry is a simple Go type registry. Safe for concurrent use, no panic.
Types can be registered under auto-generated or custom type names then retrieved under those names as a reflect Type, Value or an Interface.
func (*Registry) GetInterface ¶
GetInterface returns an interface to a new reflect.Value of reflect.Type registered under specified name or an error.
func (*Registry) GetValue ¶
GetValue returns a new reflect.Value of reflect.Type registered under specified name or an error.
func (*Registry) Register ¶
Register registers a reflect.Type of value specified by v under a name generated by GetLongTypeName or returns an error.
func (*Registry) RegisterNamed ¶
RegisterNamed registers a reflect.Type of value specified by v under specified name, which cannot be empty, or returns an error.
func (*Registry) RegisteredNames ¶
RegisteredNames returns a slice of registered type names.
func (*Registry) Unregister ¶
Unregister unregisters a reflect.Type registered under specified name or returns an error.