102 lines
2.2 KiB
Go
102 lines
2.2 KiB
Go
// Code generated by winrt-go-gen. DO NOT EDIT.
|
|
|
|
//go:build windows
|
|
|
|
//nolint:all
|
|
package collections
|
|
|
|
import (
|
|
"syscall"
|
|
"unsafe"
|
|
|
|
"github.com/go-ole/go-ole"
|
|
)
|
|
|
|
const GUIDIVectorView string = "bbe1fa4c-b0e3-4583-baef-1f1b2e483e56"
|
|
const SignatureIVectorView string = "{bbe1fa4c-b0e3-4583-baef-1f1b2e483e56}"
|
|
|
|
type IVectorView struct {
|
|
ole.IInspectable
|
|
}
|
|
|
|
type IVectorViewVtbl struct {
|
|
ole.IInspectableVtbl
|
|
|
|
GetAt uintptr
|
|
GetSize uintptr
|
|
IndexOf uintptr
|
|
GetMany uintptr
|
|
}
|
|
|
|
func (v *IVectorView) VTable() *IVectorViewVtbl {
|
|
return (*IVectorViewVtbl)(unsafe.Pointer(v.RawVTable))
|
|
}
|
|
|
|
func (v *IVectorView) GetAt(index uint32) (unsafe.Pointer, error) {
|
|
var out unsafe.Pointer
|
|
hr, _, _ := syscall.SyscallN(
|
|
v.VTable().GetAt,
|
|
uintptr(unsafe.Pointer(v)), // this
|
|
uintptr(index), // in uint32
|
|
uintptr(unsafe.Pointer(&out)), // out unsafe.Pointer
|
|
)
|
|
|
|
if hr != 0 {
|
|
return nil, ole.NewError(hr)
|
|
}
|
|
|
|
return out, nil
|
|
}
|
|
|
|
func (v *IVectorView) GetSize() (uint32, error) {
|
|
var out uint32
|
|
hr, _, _ := syscall.SyscallN(
|
|
v.VTable().GetSize,
|
|
uintptr(unsafe.Pointer(v)), // this
|
|
uintptr(unsafe.Pointer(&out)), // out uint32
|
|
)
|
|
|
|
if hr != 0 {
|
|
return 0, ole.NewError(hr)
|
|
}
|
|
|
|
return out, nil
|
|
}
|
|
|
|
func (v *IVectorView) IndexOf(value unsafe.Pointer) (uint32, bool, error) {
|
|
var index uint32
|
|
var out bool
|
|
hr, _, _ := syscall.SyscallN(
|
|
v.VTable().IndexOf,
|
|
uintptr(unsafe.Pointer(v)), // this
|
|
uintptr(value), // in unsafe.Pointer
|
|
uintptr(unsafe.Pointer(&index)), // out uint32
|
|
uintptr(unsafe.Pointer(&out)), // out bool
|
|
)
|
|
|
|
if hr != 0 {
|
|
return 0, false, ole.NewError(hr)
|
|
}
|
|
|
|
return index, out, nil
|
|
}
|
|
|
|
func (v *IVectorView) GetMany(startIndex uint32, itemsSize uint32) ([]unsafe.Pointer, uint32, error) {
|
|
var items []unsafe.Pointer = make([]unsafe.Pointer, itemsSize)
|
|
var out uint32
|
|
hr, _, _ := syscall.SyscallN(
|
|
v.VTable().GetMany,
|
|
uintptr(unsafe.Pointer(v)), // this
|
|
uintptr(startIndex), // in uint32
|
|
uintptr(itemsSize), // in uint32
|
|
uintptr(unsafe.Pointer(&items[0])), // out unsafe.Pointer
|
|
uintptr(unsafe.Pointer(&out)), // out uint32
|
|
)
|
|
|
|
if hr != 0 {
|
|
return nil, 0, ole.NewError(hr)
|
|
}
|
|
|
|
return items, out, nil
|
|
}
|