mirror of https://github.com/hashicorp/consul
34 lines
720 B
Go
34 lines
720 B
Go
// +build windows
|
|
|
|
package ole
|
|
|
|
import (
|
|
"unsafe"
|
|
)
|
|
|
|
func safeArrayFromByteSlice(slice []byte) *SafeArray {
|
|
array, _ := safeArrayCreateVector(VT_UI1, 0, uint32(len(slice)))
|
|
|
|
if array == nil {
|
|
panic("Could not convert []byte to SAFEARRAY")
|
|
}
|
|
|
|
for i, v := range slice {
|
|
safeArrayPutElement(array, int64(i), uintptr(unsafe.Pointer(&v)))
|
|
}
|
|
return array
|
|
}
|
|
|
|
func safeArrayFromStringSlice(slice []string) *SafeArray {
|
|
array, _ := safeArrayCreateVector(VT_BSTR, 0, uint32(len(slice)))
|
|
|
|
if array == nil {
|
|
panic("Could not convert []string to SAFEARRAY")
|
|
}
|
|
// SysAllocStringLen(s)
|
|
for i, v := range slice {
|
|
safeArrayPutElement(array, int64(i), uintptr(unsafe.Pointer(SysAllocStringLen(v))))
|
|
}
|
|
return array
|
|
}
|