package dict

func Copy(dest *Dict, src Dict) {
	if *dest == nil {
		*dest = make(Dict)
	}
	for k, v := range src {
		if vv, ok := v.(Dict); ok {
			t := make(Dict)
			Copy(&t, vv)
			(*dest)[k] = t
		} else {
			(*dest)[k] = v
		}
	}
}

func (dest *Dict) CopyFrom(src Dict) {
	if *dest == nil {
		*dest = make(Dict)
	}
	for k, v := range src {
		if vv, ok := v.(Dict); ok {
			t := make(Dict)
			t.CopyFrom(vv)
			(*dest)[k] = t
		} else {
			(*dest)[k] = v
		}
	}
}

func (src Dict) CopyTo(dest *Dict) {
	if *dest == nil {
		*dest = make(Dict)
	}
	for k, v := range src {
		if vv, ok := v.(Dict); ok {
			t := make(Dict)
			vv.CopyTo(&t)
			(*dest)[k] = t
		} else {
			(*dest)[k] = v
		}
	}
}