Files
go-winrt/windows/foundation/collections/ivectorview.go
2025-08-22 17:42:23 -04:00

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
}