1package v2
2
3// automatically generated file, do not edit!
4
5import (
6  "fmt"
7  "reflect"
8)
9
10// typeMap is used to dynamically look up data types from strings.
11var typeMap = map[string]interface{}{ {{ range $index, $typename := .TypeNames }}
12  "{{ $typename }}": &{{ $typename }}{},
13  "{{ snakeCase $typename }}": &{{ $typename }}{}, {{ end }}
14}
15
16// ResolveResource returns a zero-valued resource, given a name.
17// If the named type does not exist, or if the type is not a Resource,
18// then an error will be returned.
19func ResolveResource(name string) (Resource, error) {
20  t, ok := typeMap[name]
21  if !ok {
22    return nil, fmt.Errorf("type could not be found: %q", name)
23  }
24  if _, ok := t.(Resource); !ok {
25    return nil, fmt.Errorf("%q is not a Resource", name)
26  }
27  return newResource(t), nil
28}
29
30// Make a new Resource to avoid aliasing problems with ResolveResource.
31// don't use this function. no, seriously.
32func newResource(r interface{}) Resource {
33	return reflect.New(reflect.ValueOf(r).Elem().Type()).Interface().(Resource)
34}
35