package gocty import ( "math/big" "reflect" "github.com/zclconf/go-cty/cty" "github.com/zclconf/go-cty/cty/set" ) var valueType = reflect.TypeOf(cty.Value{}) var typeType = reflect.TypeOf(cty.Type{}) var setType = reflect.TypeOf(set.Set{}) var bigFloatType = reflect.TypeOf(big.Float{}) var bigIntType = reflect.TypeOf(big.Int{}) var emptyInterfaceType = reflect.TypeOf(interface{}(nil)) var stringType = reflect.TypeOf("") // structTagIndices interrogates the fields of the given type (which must // be a struct type, or we'll panic) and returns a map from the cty // attribute names declared via struct tags to the indices of the // fields holding those tags. // // This function will panic if two fields within the struct are tagged with // the same cty attribute name. func structTagIndices(st reflect.Type) map[string]int { ct := st.NumField() ret := make(map[string]int, ct) for i := 0; i < ct; i++ { field := st.Field(i) attrName := field.Tag.Get("cty") if attrName != "" { ret[attrName] = i } } return ret }