1// +build !windows
2
3package ole
4
5import (
6	"unsafe"
7)
8
9// safeArrayAccessData returns raw array pointer.
10//
11// AKA: SafeArrayAccessData in Windows API.
12func safeArrayAccessData(safearray *SafeArray) (uintptr, error) {
13	return uintptr(0), NewError(E_NOTIMPL)
14}
15
16// safeArrayUnaccessData releases raw array.
17//
18// AKA: SafeArrayUnaccessData in Windows API.
19func safeArrayUnaccessData(safearray *SafeArray) error {
20	return NewError(E_NOTIMPL)
21}
22
23// safeArrayAllocData allocates SafeArray.
24//
25// AKA: SafeArrayAllocData in Windows API.
26func safeArrayAllocData(safearray *SafeArray) error {
27	return NewError(E_NOTIMPL)
28}
29
30// safeArrayAllocDescriptor allocates SafeArray.
31//
32// AKA: SafeArrayAllocDescriptor in Windows API.
33func safeArrayAllocDescriptor(dimensions uint32) (*SafeArray, error) {
34	return nil, NewError(E_NOTIMPL)
35}
36
37// safeArrayAllocDescriptorEx allocates SafeArray.
38//
39// AKA: SafeArrayAllocDescriptorEx in Windows API.
40func safeArrayAllocDescriptorEx(variantType VT, dimensions uint32) (*SafeArray, error) {
41	return nil, NewError(E_NOTIMPL)
42}
43
44// safeArrayCopy returns copy of SafeArray.
45//
46// AKA: SafeArrayCopy in Windows API.
47func safeArrayCopy(original *SafeArray) (*SafeArray, error) {
48	return nil, NewError(E_NOTIMPL)
49}
50
51// safeArrayCopyData duplicates SafeArray into another SafeArray object.
52//
53// AKA: SafeArrayCopyData in Windows API.
54func safeArrayCopyData(original *SafeArray, duplicate *SafeArray) error {
55	return NewError(E_NOTIMPL)
56}
57
58// safeArrayCreate creates SafeArray.
59//
60// AKA: SafeArrayCreate in Windows API.
61func safeArrayCreate(variantType VT, dimensions uint32, bounds *SafeArrayBound) (*SafeArray, error) {
62	return nil, NewError(E_NOTIMPL)
63}
64
65// safeArrayCreateEx creates SafeArray.
66//
67// AKA: SafeArrayCreateEx in Windows API.
68func safeArrayCreateEx(variantType VT, dimensions uint32, bounds *SafeArrayBound, extra uintptr) (*SafeArray, error) {
69	return nil, NewError(E_NOTIMPL)
70}
71
72// safeArrayCreateVector creates SafeArray.
73//
74// AKA: SafeArrayCreateVector in Windows API.
75func safeArrayCreateVector(variantType VT, lowerBound int32, length uint32) (*SafeArray, error) {
76	return nil, NewError(E_NOTIMPL)
77}
78
79// safeArrayCreateVectorEx creates SafeArray.
80//
81// AKA: SafeArrayCreateVectorEx in Windows API.
82func safeArrayCreateVectorEx(variantType VT, lowerBound int32, length uint32, extra uintptr) (*SafeArray, error) {
83	return nil, NewError(E_NOTIMPL)
84}
85
86// safeArrayDestroy destroys SafeArray object.
87//
88// AKA: SafeArrayDestroy in Windows API.
89func safeArrayDestroy(safearray *SafeArray) error {
90	return NewError(E_NOTIMPL)
91}
92
93// safeArrayDestroyData destroys SafeArray object.
94//
95// AKA: SafeArrayDestroyData in Windows API.
96func safeArrayDestroyData(safearray *SafeArray) error {
97	return NewError(E_NOTIMPL)
98}
99
100// safeArrayDestroyDescriptor destroys SafeArray object.
101//
102// AKA: SafeArrayDestroyDescriptor in Windows API.
103func safeArrayDestroyDescriptor(safearray *SafeArray) error {
104	return NewError(E_NOTIMPL)
105}
106
107// safeArrayGetDim is the amount of dimensions in the SafeArray.
108//
109// SafeArrays may have multiple dimensions. Meaning, it could be
110// multidimensional array.
111//
112// AKA: SafeArrayGetDim in Windows API.
113func safeArrayGetDim(safearray *SafeArray) (*uint32, error) {
114	u := uint32(0)
115	return &u, NewError(E_NOTIMPL)
116}
117
118// safeArrayGetElementSize is the element size in bytes.
119//
120// AKA: SafeArrayGetElemsize in Windows API.
121func safeArrayGetElementSize(safearray *SafeArray) (*uint32, error) {
122	u := uint32(0)
123	return &u, NewError(E_NOTIMPL)
124}
125
126// safeArrayGetElement retrieves element at given index.
127func safeArrayGetElement(safearray *SafeArray, index int32, pv unsafe.Pointer) error {
128	return NewError(E_NOTIMPL)
129}
130
131// safeArrayGetElement retrieves element at given index and converts to string.
132func safeArrayGetElementString(safearray *SafeArray, index int32) (string, error) {
133	return "", NewError(E_NOTIMPL)
134}
135
136// safeArrayGetIID is the InterfaceID of the elements in the SafeArray.
137//
138// AKA: SafeArrayGetIID in Windows API.
139func safeArrayGetIID(safearray *SafeArray) (*GUID, error) {
140	return nil, NewError(E_NOTIMPL)
141}
142
143// safeArrayGetLBound returns lower bounds of SafeArray.
144//
145// SafeArrays may have multiple dimensions. Meaning, it could be
146// multidimensional array.
147//
148// AKA: SafeArrayGetLBound in Windows API.
149func safeArrayGetLBound(safearray *SafeArray, dimension uint32) (int32, error) {
150	return int32(0), NewError(E_NOTIMPL)
151}
152
153// safeArrayGetUBound returns upper bounds of SafeArray.
154//
155// SafeArrays may have multiple dimensions. Meaning, it could be
156// multidimensional array.
157//
158// AKA: SafeArrayGetUBound in Windows API.
159func safeArrayGetUBound(safearray *SafeArray, dimension uint32) (int32, error) {
160	return int32(0), NewError(E_NOTIMPL)
161}
162
163// safeArrayGetVartype returns data type of SafeArray.
164//
165// AKA: SafeArrayGetVartype in Windows API.
166func safeArrayGetVartype(safearray *SafeArray) (uint16, error) {
167	return uint16(0), NewError(E_NOTIMPL)
168}
169
170// safeArrayLock locks SafeArray for reading to modify SafeArray.
171//
172// This must be called during some calls to ensure that another process does not
173// read or write to the SafeArray during editing.
174//
175// AKA: SafeArrayLock in Windows API.
176func safeArrayLock(safearray *SafeArray) error {
177	return NewError(E_NOTIMPL)
178}
179
180// safeArrayUnlock unlocks SafeArray for reading.
181//
182// AKA: SafeArrayUnlock in Windows API.
183func safeArrayUnlock(safearray *SafeArray) error {
184	return NewError(E_NOTIMPL)
185}
186
187// safeArrayPutElement stores the data element at the specified location in the
188// array.
189//
190// AKA: SafeArrayPutElement in Windows API.
191func safeArrayPutElement(safearray *SafeArray, index int64, element uintptr) error {
192	return NewError(E_NOTIMPL)
193}
194
195// safeArrayGetRecordInfo accesses IRecordInfo info for custom types.
196//
197// AKA: SafeArrayGetRecordInfo in Windows API.
198//
199// XXX: Must implement IRecordInfo interface for this to return.
200func safeArrayGetRecordInfo(safearray *SafeArray) (interface{}, error) {
201	return nil, NewError(E_NOTIMPL)
202}
203
204// safeArraySetRecordInfo mutates IRecordInfo info for custom types.
205//
206// AKA: SafeArraySetRecordInfo in Windows API.
207//
208// XXX: Must implement IRecordInfo interface for this to return.
209func safeArraySetRecordInfo(safearray *SafeArray, recordInfo interface{}) error {
210	return NewError(E_NOTIMPL)
211}
212