Jacek Caban (@jacek) commented about dlls/mshtml/nsiface.idl:
+typedef struct nsCycleCollectionTraversalCallback nsCycleCollectionTraversalCallback; +typedef struct nsCycleCollectionParticipant nsCycleCollectionParticipant; + +typedef struct nsCycleCollectionParticipantVtbl +{ + nsresult (__stdcall *Traverse)(nsCycleCollectionParticipant *This, void *p, nsCycleCollectionTraversalCallback *cb); + void (__stdcall *Root)(nsCycleCollectionParticipant *This, void *p); + void (__stdcall *Unlink)(nsCycleCollectionParticipant *This, void *p); + void (__stdcall *Unroot)(nsCycleCollectionParticipant *This, void *p); + void (__stdcall *Trace)(nsCycleCollectionParticipant *This, void *p, const void /*TraceCallbacks*/ *cb, void *closure); + void (__stdcall *DeleteCycleCollectable)(nsCycleCollectionParticipant *This, void *p); + bool (__stdcall *CanSkipReal)(nsCycleCollectionParticipant *This, bool removingAllowed); + bool (__stdcall *CanSkipInCCReal)(nsCycleCollectionParticipant *This, void *p); + bool (__stdcall *CanSkipThisReal)(nsCycleCollectionParticipant *This, void *p); +} nsCycleCollectionParticipantVtbl;
A similar question, can it be an interface? -- https://gitlab.winehq.org/wine/wine/-/merge_requests/10045#note_149716