mirror of
				https://gitea.com/Lydanne/buildx.git
				synced 2025-11-04 10:03:42 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			44 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
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
 | 
						|
}
 |