widl: Support partially specialized parameterized type.
[wine/zf.git] / include / windows.foundation.idl
blob5f7a49c38e48a53afdc2e3af7509c7bf0b167e8e
1 /*
2 * Copyright 2015 Jacek Caban for CodeWeavers
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 #ifdef __WIDL__
20 #pragma winrt ns_prefix
21 #endif
23 import "inspectable.idl";
24 /* import "asyncinfo.idl"; */
25 import "windowscontracts.idl";
26 /* import "eventtoken.idl"; */
27 /* import "ivectorchangedeventargs.idl"; */
29 namespace Windows {
30 namespace Foundation {
31 [contract(Windows.Foundation.FoundationContract, 1.0)]
32 enum PropertyType {
33 Empty = 0,
34 UInt8 = 1,
35 Int16 = 2,
36 UInt16 = 3,
37 Int32 = 4,
38 UInt32 = 5,
39 Int64 = 6,
40 UInt64 = 7,
41 Single = 8,
42 Double = 9,
43 Char16 = 10,
44 Boolean = 11,
45 String = 12,
46 Inspectable = 13,
47 DateTime = 14,
48 TimeSpan = 15,
49 Guid = 16,
50 Point = 17,
51 Size = 18,
52 Rect = 19,
53 OtherType = 20,
54 UInt8Array = 1025,
55 Int16Array = 1026,
56 UInt16Array = 1027,
57 Int32Array = 1028,
58 UInt32Array = 1029,
59 Int64Array = 1030,
60 UInt64Array = 1031,
61 SingleArray = 1032,
62 DoubleArray = 1033,
63 Char16Array = 1034,
64 BooleanArray = 1035,
65 StringArray = 1036,
66 InspectableArray = 1037,
67 DateTimeArray = 1038,
68 TimeSpanArray = 1039,
69 GuidArray = 1040,
70 PointArray = 1041,
71 SizeArray = 1042,
72 RectArray = 1043,
73 OtherTypeArray = 1044
76 [contract(Windows.Foundation.FoundationContract, 1.0)]
77 struct Point {
78 FLOAT X;
79 FLOAT Y;
82 [contract(Windows.Foundation.FoundationContract, 1.0)]
83 struct Size {
84 FLOAT Width;
85 FLOAT Height;
88 [contract(Windows.Foundation.FoundationContract, 1.0)]
89 struct Rect {
90 FLOAT X;
91 FLOAT Y;
92 FLOAT Width;
93 FLOAT Height;
96 [contract(Windows.Foundation.FoundationContract, 1.0)]
97 struct DateTime {
98 INT64 UniversalTime;
101 [contract(Windows.Foundation.FoundationContract, 1.0)]
102 struct TimeSpan {
103 INT64 Duration;
107 contract(Windows.Foundation.FoundationContract, 1.0),
108 uuid(96369f54-8eb6-48f0-abce-c1b211e627c3)
110 interface IStringable : IInspectable
112 HRESULT ToString([out, retval] HSTRING *value);
115 #ifdef __WIDL__
116 namespace Collections
119 contract(Windows.Foundation.FoundationContract, 1.0),
120 uuid(6a79e863-4300-459a-9966-cbb660963ee1)
122 interface IIterator<T> : IInspectable
124 [propget] HRESULT Current([out, retval] T *value);
125 [propget] HRESULT HasCurrent([out, retval] BOOL *value);
126 HRESULT MoveNext([out, retval] BOOL *value);
127 HRESULT GetMany([in] UINT32 count, [out] T *items, [out, retval] UINT32 *value);
131 contract(Windows.Foundation.FoundationContract, 1.0),
132 uuid(faa585ea-6214-4217-afda-7f46de5869b3)
134 interface IIterable<T> : IInspectable
136 HRESULT First([out, retval] Windows.Foundation.Collections.IIterator<T> **value);
140 contract(Windows.Foundation.FoundationContract, 1.0),
141 uuid(bbe1fa4c-b0e3-4583-baef-1f1b2e483e56)
143 interface IVectorView<T> : IInspectable
145 HRESULT GetAt([in] ULONG index, [out, retval] T *value);
146 [propget] HRESULT Size([out, retval] ULONG *value);
147 HRESULT IndexOf([in, optional] T element, [out] ULONG *index, [out, retval] BOOLEAN *value);
148 HRESULT GetMany([in] ULONG start_index, [out] T *items, [out, retval] ULONG *value);
151 #endif