| // +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 |
| } |