They are not actually runtime classes, but it tricks widl into producing
correct code (and class string).

ApplicationData is a sealed class implementing some interfaces [1]
KnownFolders is a static class implementing multiple interfaces [2].

[1] https://docs.microsoft.com/en-us/uwp/api/windows.storage.applicationdata
[2] https://docs.microsoft.com/en-us/uwp/api/windows.storage.knownfolders
---
 mingw-w64-headers/include/windows.storage.idl | 32 ++++++++++++++++++-
 1 file changed, 31 insertions(+), 1 deletion(-)

diff --git a/mingw-w64-headers/include/windows.storage.idl 
b/mingw-w64-headers/include/windows.storage.idl
index 08d684829..f47d7adc8 100644
--- a/mingw-w64-headers/include/windows.storage.idl
+++ b/mingw-w64-headers/include/windows.storage.idl
@@ -29,9 +29,20 @@ namespace Windows {
     typedef enum ApplicationDataCreateDisposition 
ApplicationDataCreateDisposition;
     typedef enum FileAttributes FileAttributes;
     typedef enum CreationCollisionOption CreationCollisionOption;
+
+    runtimeclass ApplicationData;
+    runtimeclass KnownFolders;
   }
 }
 
+namespace Windows {
+    namespace Foundation {
+        declare {
+            interface 
Windows.Foundation.TypedEventHandler<Windows.Storage.ApplicationData*, 
IInspectable*>;
+        }
+    }
+}
+
 namespace Windows {
   namespace Storage {
     enum NameCollisionOption {
@@ -112,6 +123,17 @@ namespace Windows {
         [propget] HRESULT MediaServerDevices(IStorageFolder** value);
     }
 
+    [
+        activatable(Windows.Foundation.UniversalApiContract, 1.0),
+        contract(Windows.Foundation.UniversalApiContract, 1.0),
+        marshaling_behavior(agile),
+        static(Windows.Storage.IKnownFoldersStatics, 
Windows.Foundation.UniversalApiContract, 1.0),
+    ]
+    runtimeclass KnownFolders
+    {
+      [default] interface IInspectable;
+    }
+
     [uuid(72D1CB78-B3EF-4F75-A80B-6FD9DAE2944B)]
     interface IStorageFolder : IInspectable
     {
@@ -148,12 +170,20 @@ namespace Windows {
       [propget] HRESULT LocalFolder(IStorageFolder** value);
       [propget] HRESULT RoamingFolder(IStorageFolder** value);
       [propget] HRESULT TemporaryFolder(IStorageFolder** value);
-      [eventadd] HRESULT DataChanged(/*TypedEventHandler<ApplicationData*, 
IInspectable*>*/IInspectable* handler, EventRegistrationToken* token);
+      [eventadd] HRESULT 
DataChanged(Windows.Foundation.TypedEventHandler<ApplicationData*, 
IInspectable*>* handler, EventRegistrationToken* token);
       [eventremove] HRESULT DataChanged(EventRegistrationToken token);
       HRESULT SignalDataChanged();
       HRESULT RoamingStorageQuota(UINT64* value);
     }
 
+    [
+      marshaling_behavior(agile)
+    ]
+    runtimeclass ApplicationData
+    {
+      [default] interface IApplicationData;
+    }
+
     [uuid(9E65CD69-0BA3-4E32-BE29-B02DE6607638)]
     interface IApplicationData2 : IInspectable {
       [propget] HRESULT LocalCacheFolder(IStorageFolder** value);
-- 
2.29.2



_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to