1// +build windows
2
3package ole
4
5import (
6	"unsafe"
7)
8
9func safeArrayFromByteSlice(slice []byte) *SafeArray {
10	array, _ := safeArrayCreateVector(VT_UI1, 0, uint32(len(slice)))
11
12	if array == nil {
13		panic("Could not convert []byte to SAFEARRAY")
14	}
15
16	for i, v := range slice {
17		safeArrayPutElement(array, int64(i), uintptr(unsafe.Pointer(&v)))
18	}
19	return array
20}
21
22func safeArrayFromStringSlice(slice []string) *SafeArray {
23	array, _ := safeArrayCreateVector(VT_BSTR, 0, uint32(len(slice)))
24
25	if array == nil {
26		panic("Could not convert []string to SAFEARRAY")
27	}
28	// SysAllocStringLen(s)
29	for i, v := range slice {
30		safeArrayPutElement(array, int64(i), uintptr(unsafe.Pointer(SysAllocStringLen(v))))
31	}
32	return array
33}
34