81 lines · cpp
1// RUN: %clang_cc1 -emit-llvm %s -o - -triple i386-apple-macosx10.7.22// PR10843 4extern "C"5{6 typedef unsigned char PRUint8;7 typedef unsigned int PRUint32;8}9typedef PRUint32 nsresult;10struct nsID11{12};13typedef nsID nsIID;14class nsISupports15{16};17extern "C++"18{19 template < class T > struct nsCOMTypeInfo20 {21 static const nsIID & GetIID ()22 {23 static const nsIID i = {};24 return i;25 }26 };27}28 29class nsIDOMEvent:public nsISupports30{31};32class nsIDOMEventListener:public nsISupports33{34public:static const nsIID & GetIID ()35 {36 static const nsIID i = {};37 return i;38 }39 virtual nsresult40 __attribute__ ((regparm (0), cdecl)) HandleEvent (nsIDOMEvent * event) =41 0;42};43class nsIDOMMouseListener:public nsIDOMEventListener44{45public:static const nsIID & GetIID ()46 {47 static const nsIID iid = {48 };49 return iid;50 }51 virtual nsresult52 __attribute__ ((regparm (0),53 cdecl)) MouseDown (nsIDOMEvent * aMouseEvent) = 0;54};55typedef56typeof (&nsIDOMEventListener::HandleEvent)57 GenericHandler;58 struct EventDispatchData59 {60 PRUint32 message;61 GenericHandler method;62 PRUint8 bits;63 };64 struct EventTypeData65 {66 const EventDispatchData *events;67 int numEvents;68 const nsIID *iid;69 };70 static const EventDispatchData sMouseEvents[] = {71 {72 (300 + 2),73 reinterpret_cast < GenericHandler > (&nsIDOMMouseListener::MouseDown),74 0x01}75 };76static const EventTypeData sEventTypes[] = {77 {78 sMouseEvents, (sizeof (sMouseEvents) / sizeof (sMouseEvents[0])),79 &nsCOMTypeInfo < nsIDOMMouseListener >::GetIID ()}80};81