Home | History | Annotate | Download | only in CodeGenCXX
      1 // RUN: %clang_cc1 -emit-llvm %s -o - -triple i386-apple-macosx10.7.2
      2 // PR1084
      3 
      4 extern "C"
      5 {
      6   typedef unsigned char PRUint8;
      7   typedef unsigned int PRUint32;
      8 }
      9 typedef PRUint32 nsresult;
     10 struct nsID
     11 {
     12 };
     13 typedef nsID nsIID;
     14 class nsISupports
     15 {
     16 };
     17 extern "C++"
     18 {
     19   template < class T > struct nsCOMTypeInfo
     20   {
     21     static const nsIID & GetIID ()
     22     {
     23     }
     24   };
     25 }
     26 
     27 class nsIDOMEvent:public nsISupports
     28 {
     29 };
     30 class nsIDOMEventListener:public nsISupports
     31 {
     32 public:static const nsIID & GetIID ()
     33   {
     34   }
     35   virtual nsresult
     36     __attribute__ ((regparm (0), cdecl)) HandleEvent (nsIDOMEvent * event) =
     37     0;
     38 };
     39 class nsIDOMMouseListener:public nsIDOMEventListener
     40 {
     41 public:static const nsIID & GetIID ()
     42   {
     43     static const nsIID iid = {
     44     };
     45   }
     46   virtual nsresult
     47     __attribute__ ((regparm (0),
     48 		    cdecl)) MouseDown (nsIDOMEvent * aMouseEvent) = 0;
     49 };
     50 typedef
     51 typeof (&nsIDOMEventListener::HandleEvent)
     52   GenericHandler;
     53      struct EventDispatchData
     54      {
     55        PRUint32 message;
     56        GenericHandler method;
     57        PRUint8 bits;
     58      };
     59      struct EventTypeData
     60      {
     61        const EventDispatchData *events;
     62        int numEvents;
     63        const nsIID *iid;
     64      };
     65      static const EventDispatchData sMouseEvents[] = {
     66        {
     67 	(300 + 2),
     68 	reinterpret_cast < GenericHandler > (&nsIDOMMouseListener::MouseDown),
     69 	0x01}
     70      };
     71 static const EventTypeData sEventTypes[] = {
     72   {
     73    sMouseEvents, (sizeof (sMouseEvents) / sizeof (sMouseEvents[0])),
     74    &nsCOMTypeInfo < nsIDOMMouseListener >::GetIID ()}
     75 };
     76