Ignore:
Timestamp:
Nov 5, 1999, 9:38:46 PM (26 years ago)
Author:
davidr
Message:

Updated from Wine.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/win/wine/obj_base.h

    r1546 r1626  
    1 /* $Id: obj_base.h,v 1.13 1999-11-02 19:06:43 sandervl Exp $ */
     1/* $Id: obj_base.h,v 1.14 1999-11-05 20:38:46 davidr Exp $ */
    22/*
    33 * This file defines the macros and types necessary to define COM interfaces,
     
    325325
    326326#define ICOM_VTABLE(iface)       iface##Vtbl
     327#define ICOM_VFIELD(iface)       ICOM_VTABLE(iface)* lpVtbl
     328#define ICOM_VTBL(iface)         (iface)->lpVtbl
    327329
    328330
     
    336338#define ICOM_METHOD(ret,xfn) \
    337339     public: virtual ret (CALLBACK xfn)(void) = 0;
    338 
    339340#define ICOM_METHOD1(ret,xfn,ta,na) \
    340341     public: virtual ret (CALLBACK xfn)(ta a) = 0;
    341 
    342342#define ICOM_METHOD2(ret,xfn,ta,na,tb,nb) \
    343343     public: virtual ret (CALLBACK xfn)(ta a,tb b) = 0;
    344 
    345344#define ICOM_METHOD3(ret,xfn,ta,na,tb,nb,tc,nc) \
    346345     public: virtual ret (CALLBACK xfn)(ta a,tb b,tc c) = 0;
    347 
    348346#define ICOM_METHOD4(ret,xfn,ta,na,tb,nb,tc,nc,td,nd) \
    349347     public: virtual ret (CALLBACK xfn)(ta a,tb b,tc c,td d) = 0;
    350 
    351348#define ICOM_METHOD5(ret,xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne) \
    352349     public: virtual ret (CALLBACK xfn)(ta a,tb b,tc c,td d,te e) = 0;
    353 
    354350#define ICOM_METHOD6(ret,xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne,tf,nf) \
    355351     public: virtual ret (CALLBACK xfn)(ta a,tb b,tc c,td d,te e,tf f) = 0;
    356 
    357352#define ICOM_METHOD7(ret,xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne,tf,nf,tg,ng) \
    358353     public: virtual ret (CALLBACK xfn)(ta a,tb b,tc c,td d,te e,tf f,tg g) = 0;
    359 
    360354#define ICOM_METHOD8(ret,xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne,tf,nf,tg,ng,th,nh) \
    361355     public: virtual ret (CALLBACK xfn)(ta a,tb b,tc c,td d,te e,tf f,tg g,th h) = 0;
    362 
    363356#define ICOM_METHOD9(ret,xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne,tf,nf,tg,ng,th,nh,ti,ni) \
    364357     public: virtual ret (CALLBACK xfn)(ta a,tb b,tc c,td d,te e,tf f,tg g,th h,ti i) = 0;
    365 
    366358#define ICOM_METHOD10(ret,xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne,tf,nf,tg,ng,th,nh,ti,ni,tj,nj) \
    367359     public: virtual ret (CALLBACK xfn)(ta a,tb b,tc c,td d,te e,tf f,tg g,th h,ti i,tj j) = 0;
     
    370362#define ICOM_CMETHOD(ret,xfn) \
    371363     public: virtual ret (CALLBACK xfn)(void) const = 0;
    372 
    373364#define ICOM_CMETHOD1(ret,xfn,ta,na) \
    374365     public: virtual ret (CALLBACK xfn)(ta a) const = 0;
    375 
    376366#define ICOM_CMETHOD2(ret,xfn,ta,na,tb,nb) \
    377367     public: virtual ret (CALLBACK xfn)(ta a,tb b) const = 0;
    378 
    379368#define ICOM_CMETHOD3(ret,xfn,ta,na,tb,nb,tc,nc) \
    380369     public: virtual ret (CALLBACK xfn)(ta a,tb b,tc c) const = 0;
    381 
    382370#define ICOM_CMETHOD4(ret,xfn,ta,na,tb,nb,tc,nc,td,nd) \
    383371     public: virtual ret (CALLBACK xfn)(ta a,tb b,tc c,td d) const = 0;
    384 
    385372#define ICOM_CMETHOD5(ret,xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne) \
    386373     public: virtual ret (CALLBACK xfn)(ta a,tb b,tc c,td d,te e) const = 0;
    387 
    388374#define ICOM_CMETHOD6(ret,xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne,tf,nf) \
    389375     public: virtual ret (CALLBACK xfn)(ta a,tb b,tc c,td d,te e,tf f) const = 0;
    390 
    391376#define ICOM_CMETHOD7(ret,xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne,tf,nf,tg,ng) \
    392377     public: virtual ret (CALLBACK xfn)(ta a,tb b,tc c,td d,te e,tf f,tg g) const = 0;
    393 
    394378#define ICOM_CMETHOD8(ret,xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne,tf,nf,tg,ng,th,nh) \
    395379     public: virtual ret (CALLBACK xfn)(ta a,tb b,tc c,td d,te e,tf f,tg g,th h) const = 0;
     
    398382#define ICOM_VMETHOD(xfn) \
    399383     public: virtual void (CALLBACK xfn)(void) = 0;
    400 
    401384#define ICOM_VMETHOD1(xfn,ta,na) \
    402385     public: virtual void (CALLBACK xfn)(ta a) = 0;
    403 
    404386#define ICOM_VMETHOD2(xfn,ta,na,tb,nb) \
    405387     public: virtual void (CALLBACK xfn)(ta a,tb b) = 0;
    406 
    407388#define ICOM_VMETHOD3(xfn,ta,na,tb,nb,tc,nc) \
    408389     public: virtual void (CALLBACK xfn)(ta a,tb b,tc c) = 0;
    409 
    410390#define ICOM_VMETHOD4(xfn,ta,na,tb,nb,tc,nc,td,nd) \
    411391     public: virtual void (CALLBACK xfn)(ta a,tb b,tc c,td d) = 0;
    412 
    413392#define ICOM_VMETHOD5(xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne) \
    414393     public: virtual void (CALLBACK xfn)(ta a,tb b,tc c,td d,te e) = 0;
    415 
    416394#define ICOM_VMETHOD6(xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne,tf,nf) \
    417395     public: virtual void (CALLBACK xfn)(ta a,tb b,tc c,td d,te e,tf f) = 0;
    418 
    419396#define ICOM_VMETHOD7(xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne,tf,nf,tg,ng) \
    420397     public: virtual void (CALLBACK xfn)(ta a,tb b,tc c,td d,te e,tf f,tg g) = 0;
    421 
    422398#define ICOM_VMETHOD8(xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne,tf,nf,tg,ng,th,nh) \
    423399     public: virtual void (CALLBACK xfn)(ta a,tb b,tc c,td d,te e,tf f,tg g,th h) = 0;
     
    426402#define ICOM_CVMETHOD(xfn) \
    427403     public: virtual void (CALLBACK xfn)(void) const = 0;
    428 
    429404#define ICOM_CVMETHOD1(xfn,ta,na) \
    430405     public: virtual void (CALLBACK xfn)(ta a) const = 0;
    431 
    432406#define ICOM_CVMETHOD2(xfn,ta,na,tb,nb) \
    433407     public: virtual void (CALLBACK xfn)(ta a,tb b) const = 0;
    434 
    435408#define ICOM_CVMETHOD3(xfn,ta,na,tb,nb,tc,nc) \
    436409     public: virtual void (CALLBACK xfn)(ta a,tb b,tc c) const = 0;
    437 
    438410#define ICOM_CVMETHOD4(xfn,ta,na,tb,nb,tc,nc,td,nd) \
    439411     public: virtual void (CALLBACK xfn)(ta a,tb b,tc c,td d) const = 0;
    440 
    441412#define ICOM_CVMETHOD5(xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne) \
    442413     public: virtual void (CALLBACK xfn)(ta a,tb b,tc c,td d,te e) const = 0;
    443 
    444414#define ICOM_CVMETHOD6(xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne,tf,nf) \
    445415     public: virtual void (CALLBACK xfn)(ta a,tb b,tc c,td d,te e,tf f) const = 0;
    446 
    447416#define ICOM_CVMETHOD7(xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne,tf,nf,tg,ng) \
    448417     public: virtual void (CALLBACK xfn)(ta a,tb b,tc c,td d,te e,tf f,tg g) const = 0;
    449 
    450418#define ICOM_CVMETHOD8(xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne,tf,nf,tg,ng,th,nh) \
    451419     public: virtual void (CALLBACK xfn)(ta a,tb b,tc c,td d,te e,tf f,tg g,th h) const = 0;
     
    467435#endif /* ICOM_USE_COM_INTERFACE_ATTRIBUTE */
    468436
    469 #define ICOM_CALL(xfn, p)                        this_is_a_syntax_error
    470 #define ICOM_CALL1(xfn, p,a)                     this_is_a_syntax_error
    471 #define ICOM_CALL2(xfn, p,a,b)                   this_is_a_syntax_error
    472 #define ICOM_CALL3(xfn, p,a,b,c)                 this_is_a_syntax_error
    473 #define ICOM_CALL4(xfn, p,a,b,c,d)               this_is_a_syntax_error
    474 #define ICOM_CALL5(xfn, p,a,b,c,d,e)             this_is_a_syntax_error
    475 #define ICOM_CALL6(xfn, p,a,b,c,d,e,f)           this_is_a_syntax_error
    476 #define ICOM_CALL7(xfn, p,a,b,c,d,e,f,g)         this_is_a_syntax_error
    477 #define ICOM_CALL8(xfn, p,a,b,c,d,e,f,g,h) this_is_a_syntax_error
     437#define ICOM_CALL(xfn, p)                  (p)->xfn()
     438#define ICOM_CALL1(xfn, p,a)               (p)->xfn(a)
     439#define ICOM_CALL2(xfn, p,a,b)             (p)->xfn(a,b)
     440#define ICOM_CALL3(xfn, p,a,b,c)           (p)->xfn(a,b,c)
     441#define ICOM_CALL4(xfn, p,a,b,c,d)         (p)->xfn(a,b,c,d)
     442#define ICOM_CALL5(xfn, p,a,b,c,d,e)       (p)->xfn(a,b,c,d,e)
     443#define ICOM_CALL6(xfn, p,a,b,c,d,e,f)     (p)->xfn(a,b,c,d,e,f)
     444#define ICOM_CALL7(xfn, p,a,b,c,d,e,f,g)   (p)->xfn(a,b,c,d,e,f,g)
     445#define ICOM_CALL8(xfn, p,a,b,c,d,e,f,g,h) (p)->xfn(a,b,c,d,e,f,g,h)
    478446
    479447
     
    482450
    483451
     452#ifdef __WINE__
     453
    484454#define ICOM_METHOD(ret,xfn) \
    485455    ret (CALLBACK *fn##xfn)(ICOM_INTERFACE* me);
    486 
    487456#define ICOM_METHOD1(ret,xfn,ta,na) \
    488457    ret (CALLBACK *fn##xfn)(ICOM_INTERFACE* me,ta a);
    489 
    490458#define ICOM_METHOD2(ret,xfn,ta,na,tb,nb) \
    491459    ret (CALLBACK *fn##xfn)(ICOM_INTERFACE* me,ta a,tb b);
    492 
    493460#define ICOM_METHOD3(ret,xfn,ta,na,tb,nb,tc,nc) \
    494461    ret (CALLBACK *fn##xfn)(ICOM_INTERFACE* me,ta a,tb b,tc c);
    495 
    496462#define ICOM_METHOD4(ret,xfn,ta,na,tb,nb,tc,nc,td,nd) \
    497463    ret (CALLBACK *fn##xfn)(ICOM_INTERFACE* me,ta a,tb b,tc c,td d);
    498 
    499464#define ICOM_METHOD5(ret,xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne) \
    500465    ret (CALLBACK *fn##xfn)(ICOM_INTERFACE* me,ta a,tb b,tc c,td d,te e);
    501 
    502466#define ICOM_METHOD6(ret,xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne,tf,nf) \
    503467    ret (CALLBACK *fn##xfn)(ICOM_INTERFACE* me,ta a,tb b,tc c,td d,te e,tf f);
    504 
    505468#define ICOM_METHOD7(ret,xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne,tf,nf,tg,ng) \
    506469    ret (CALLBACK *fn##xfn)(ICOM_INTERFACE* me,ta a,tb b,tc c,td d,te e,tf f,tg g);
    507 
    508470#define ICOM_METHOD8(ret,xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne,tf,nf,tg,ng,th,nh) \
    509471    ret (CALLBACK *fn##xfn)(ICOM_INTERFACE* me,ta a,tb b,tc c,td d,te e,tf f,tg g,th h);
    510 
    511472#define ICOM_METHOD9(ret,xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne,tf,nf,tg,ng,th,nh,ti,ni) \
    512473    ret (CALLBACK *fn##xfn)(ICOM_INTERFACE* me,ta a,tb b,tc c,td d,te e,tf f,tg g,th h,ti i);
    513 
    514474#define ICOM_METHOD10(ret,xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne,tf,nf,tg,ng,th,nh,ti,ni,tj,nj) \
    515475    ret (CALLBACK *fn##xfn)(ICOM_INTERFACE* me,ta a,tb b,tc c,td d,te e,tf f,tg g,th h,ti i,tj j);
    516476
    517 
    518477#define ICOM_CMETHOD(ret,xfn) \
    519478        ret (CALLBACK *fn##xfn)(const ICOM_INTERFACE* me);
    520 
    521479#define ICOM_CMETHOD1(ret,xfn,ta,na) \
    522480    ret (CALLBACK *fn##xfn)(const ICOM_INTERFACE* me,ta a);
    523 
    524481#define ICOM_CMETHOD2(ret,xfn,ta,na,tb,nb) \
    525482    ret (CALLBACK *fn##xfn)(const ICOM_INTERFACE* me,ta a,tb b);
    526 
    527483#define ICOM_CMETHOD3(ret,xfn,ta,na,tb,nb,tc,nc) \
    528484    ret (CALLBACK *fn##xfn)(const ICOM_INTERFACE* me,ta a,tb b,tc c);
    529 
    530485#define ICOM_CMETHOD4(ret,xfn,ta,na,tb,nb,tc,nc,td,nd) \
    531486    ret (CALLBACK *fn##xfn)(const ICOM_INTERFACE* me,ta a,tb b,tc c,td d);
    532 
    533487#define ICOM_CMETHOD5(ret,xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne) \
    534488    ret (CALLBACK *fn##xfn)(const ICOM_INTERFACE* me,ta a,tb b,tc c,td d,te e);
    535 
    536489#define ICOM_CMETHOD6(ret,xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne,tf,nf) \
    537490    ret (CALLBACK *fn##xfn)(const ICOM_INTERFACE* me,ta a,tb b,tc c,td d,te e,tf f);
    538 
    539491#define ICOM_CMETHOD7(ret,xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne,tf,nf,tg,ng) \
    540492    ret (CALLBACK *fn##xfn)(const ICOM_INTERFACE* me,ta a,tb b,tc c,td d,te e,tf f,tg g);
    541 
    542493#define ICOM_CMETHOD8(ret,xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne,tf,nf,tg,ng,th,nh) \
    543494    ret (CALLBACK *fn##xfn)(const ICOM_INTERFACE* me,ta a,tb b,tc c,td d,te e,tf f,tg g,th h);
    544495
    545 
    546496#define ICOM_VMETHOD(xfn) \
    547497    void (CALLBACK *fn##xfn)(ICOM_INTERFACE* me);
    548 
    549498#define ICOM_VMETHOD1(xfn,ta,na) \
    550499    void (CALLBACK *fn##xfn)(ICOM_INTERFACE* me,ta a);
    551 
    552500#define ICOM_VMETHOD2(xfn,ta,na,tb,nb) \
    553501    void (CALLBACK *fn##xfn)(ICOM_INTERFACE* me,ta a,tb b);
    554 
    555502#define ICOM_VMETHOD3(xfn,ta,na,tb,nb,tc,nc) \
    556503    void (CALLBACK *fn##xfn)(ICOM_INTERFACE* me,ta a,tb b,tc c);
    557 
    558504#define ICOM_VMETHOD4(xfn,ta,na,tb,nb,tc,nc,td,nd) \
    559505    void (CALLBACK *fn##xfn)(ICOM_INTERFACE* me,ta a,tb b,tc c,td d);
    560 
    561506#define ICOM_VMETHOD5(xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne) \
    562507    void (CALLBACK *fn##xfn)(ICOM_INTERFACE* me,ta a,tb b,tc c,td d,te e);
    563 
    564508#define ICOM_VMETHOD6(xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne,tf,nf) \
    565509    void (CALLBACK *fn##xfn)(ICOM_INTERFACE* me,ta a,tb b,tc c,td d,te e,tf f);
    566 
    567510#define ICOM_VMETHOD7(xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne,tf,nf,tg,ng) \
    568511    void (CALLBACK *fn##xfn)(ICOM_INTERFACE* me,ta a,tb b,tc c,td d,te e,tf f,tg g);
    569 
    570512#define ICOM_VMETHOD8(xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne,tf,nf,tg,ng,nh) \
    571513    void (CALLBACK *fn##xfn)(ICOM_INTERFACE* me,ta a,tb b,tc c,td d,te e,tf f,tg g,th h);
    572514
    573 
    574515#define ICOM_CVMETHOD(xfn) \
    575516        void (CALLBACK *fn##xfn)(const ICOM_INTERFACE* me);
    576 
    577517#define ICOM_CVMETHOD1(xfn,ta,na) \
    578518    void (CALLBACK *fn##xfn)(const ICOM_INTERFACE* me,ta a);
    579 
    580519#define ICOM_CVMETHOD2(xfn,ta,na,tb,nb) \
    581520    void (CALLBACK *fn##xfn)(const ICOM_INTERFACE* me,ta a,tb b);
    582 
    583521#define ICOM_CVMETHOD3(xfn,ta,na,tb,nb,tc,nc) \
    584522    void (CALLBACK *fn##xfn)(const ICOM_INTERFACE* me,ta a,tb b,tc c);
    585 
    586523#define ICOM_CVMETHOD4(xfn,ta,na,tb,nb,tc,nc,td,nd) \
    587524    void (CALLBACK *fn##xfn)(const ICOM_INTERFACE* me,ta a,tb b,tc c,td d);
    588 
    589525#define ICOM_CVMETHOD5(xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne) \
    590526    void (CALLBACK *fn##xfn)(const ICOM_INTERFACE* me,ta a,tb b,tc c,td d,te e);
    591 
    592527#define ICOM_CVMETHOD6(xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne,tf,nf) \
    593528    void (CALLBACK *fn##xfn)(const ICOM_INTERFACE* me,ta a,tb b,tc c,td d,te e,tf f);
    594 
    595529#define ICOM_CVMETHOD7(xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne,tf,nf,tg,ng) \
    596530    void (CALLBACK *fn##xfn)(const ICOM_INTERFACE* me,ta a,tb b,tc c,td d,te e,tf f,tg g);
    597 
    598531#define ICOM_CVMETHOD8(xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne,tf,nf,tg,ng,th,nh) \
    599532    void (CALLBACK *fn##xfn)(const ICOM_INTERFACE* me,ta a,tb b,tc c,td d,te e,tf f,tg g,th h);
    600533
     534#define ICOM_CALL(xfn, p)                       ICOM_VTBL(p)->fn##xfn(p)
     535#define ICOM_CALL1(xfn, p,a)                    ICOM_VTBL(p)->fn##xfn(p,a)
     536#define ICOM_CALL2(xfn, p,a,b)                  ICOM_VTBL(p)->fn##xfn(p,a,b)
     537#define ICOM_CALL3(xfn, p,a,b,c)                ICOM_VTBL(p)->fn##xfn(p,a,b,c)
     538#define ICOM_CALL4(xfn, p,a,b,c,d)              ICOM_VTBL(p)->fn##xfn(p,a,b,c,d)
     539#define ICOM_CALL5(xfn, p,a,b,c,d,e)            ICOM_VTBL(p)->fn##xfn(p,a,b,c,d,e)
     540#define ICOM_CALL6(xfn, p,a,b,c,d,e,f)          ICOM_VTBL(p)->fn##xfn(p,a,b,c,d,e,f)
     541#define ICOM_CALL7(xfn, p,a,b,c,d,e,f,g)        ICOM_VTBL(p)->fn##xfn(p,a,b,c,d,e,f,g)
     542#define ICOM_CALL8(xfn, p,a,b,c,d,e,f,g,h)      ICOM_VTBL(p)->fn##xfn(p,a,b,c,d,e,f,g,h)
     543#define ICOM_CALL9(xfn, p,a,b,c,d,e,f,g,h,i)    ICOM_VTBL(p)->fn##xfn(p,a,b,c,d,e,f,g,h,i)
     544#define ICOM_CALL10(xfn, p,a,b,c,d,e,f,g,h,i,j) ICOM_VTBL(p)->fn##xfn(p,a,b,c,d,e,f,g,h,i,j)
     545
     546#else
     547
     548/* WINELIB case */
     549
     550#define ICOM_METHOD(ret,xfn) \
     551    ret (CALLBACK *xfn)(ICOM_INTERFACE* me);
     552#define ICOM_METHOD1(ret,xfn,ta,na) \
     553    ret (CALLBACK *xfn)(ICOM_INTERFACE* me,ta a);
     554#define ICOM_METHOD2(ret,xfn,ta,na,tb,nb) \
     555    ret (CALLBACK *xfn)(ICOM_INTERFACE* me,ta a,tb b);
     556#define ICOM_METHOD3(ret,xfn,ta,na,tb,nb,tc,nc) \
     557    ret (CALLBACK *xfn)(ICOM_INTERFACE* me,ta a,tb b,tc c);
     558#define ICOM_METHOD4(ret,xfn,ta,na,tb,nb,tc,nc,td,nd) \
     559    ret (CALLBACK *xfn)(ICOM_INTERFACE* me,ta a,tb b,tc c,td d);
     560#define ICOM_METHOD5(ret,xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne) \
     561    ret (CALLBACK *xfn)(ICOM_INTERFACE* me,ta a,tb b,tc c,td d,te e);
     562#define ICOM_METHOD6(ret,xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne,tf,nf) \
     563    ret (CALLBACK *xfn)(ICOM_INTERFACE* me,ta a,tb b,tc c,td d,te e,tf f);
     564#define ICOM_METHOD7(ret,xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne,tf,nf,tg,ng) \
     565    ret (CALLBACK *xfn)(ICOM_INTERFACE* me,ta a,tb b,tc c,td d,te e,tf f,tg g);
     566#define ICOM_METHOD8(ret,xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne,tf,nf,tg,ng,th,nh) \
     567    ret (CALLBACK *xfn)(ICOM_INTERFACE* me,ta a,tb b,tc c,td d,te e,tf f,tg g,th h);
     568#define ICOM_METHOD9(ret,xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne,tf,nf,tg,ng,th,nh,ti,ni) \
     569    ret (CALLBACK *xfn)(ICOM_INTERFACE* me,ta a,tb b,tc c,td d,te e,tf f,tg g,th h,ti i);
     570#define ICOM_METHOD10(ret,xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne,tf,nf,tg,ng,th,nh,ti,ni,tj,nj) \
     571    ret (CALLBACK *xfn)(ICOM_INTERFACE* me,ta a,tb b,tc c,td d,te e,tf f,tg g,th h,ti i,tj j);
     572
     573#define ICOM_CMETHOD(ret,xfn) \
     574        ret (CALLBACK *xfn)(const ICOM_INTERFACE* me);
     575#define ICOM_CMETHOD1(ret,xfn,ta,na) \
     576    ret (CALLBACK *xfn)(const ICOM_INTERFACE* me,ta a);
     577#define ICOM_CMETHOD2(ret,xfn,ta,na,tb,nb) \
     578    ret (CALLBACK *xfn)(const ICOM_INTERFACE* me,ta a,tb b);
     579#define ICOM_CMETHOD3(ret,xfn,ta,na,tb,nb,tc,nc) \
     580    ret (CALLBACK *xfn)(const ICOM_INTERFACE* me,ta a,tb b,tc c);
     581#define ICOM_CMETHOD4(ret,xfn,ta,na,tb,nb,tc,nc,td,nd) \
     582    ret (CALLBACK *xfn)(const ICOM_INTERFACE* me,ta a,tb b,tc c,td d);
     583#define ICOM_CMETHOD5(ret,xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne) \
     584    ret (CALLBACK *xfn)(const ICOM_INTERFACE* me,ta a,tb b,tc c,td d,te e);
     585#define ICOM_CMETHOD6(ret,xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne,tf,nf) \
     586    ret (CALLBACK *xfn)(const ICOM_INTERFACE* me,ta a,tb b,tc c,td d,te e,tf f);
     587#define ICOM_CMETHOD7(ret,xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne,tf,nf,tg,ng) \
     588    ret (CALLBACK *xfn)(const ICOM_INTERFACE* me,ta a,tb b,tc c,td d,te e,tf f,tg g);
     589#define ICOM_CMETHOD8(ret,xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne,tf,nf,tg,ng,th,nh) \
     590    ret (CALLBACK *xfn)(const ICOM_INTERFACE* me,ta a,tb b,tc c,td d,te e,tf f,tg g,th h);
     591
     592#define ICOM_VMETHOD(xfn) \
     593    void (CALLBACK *xfn)(ICOM_INTERFACE* me);
     594#define ICOM_VMETHOD1(xfn,ta,na) \
     595    void (CALLBACK *xfn)(ICOM_INTERFACE* me,ta a);
     596#define ICOM_VMETHOD2(xfn,ta,na,tb,nb) \
     597    void (CALLBACK *xfn)(ICOM_INTERFACE* me,ta a,tb b);
     598#define ICOM_VMETHOD3(xfn,ta,na,tb,nb,tc,nc) \
     599    void (CALLBACK *xfn)(ICOM_INTERFACE* me,ta a,tb b,tc c);
     600#define ICOM_VMETHOD4(xfn,ta,na,tb,nb,tc,nc,td,nd) \
     601    void (CALLBACK *xfn)(ICOM_INTERFACE* me,ta a,tb b,tc c,td d);
     602#define ICOM_VMETHOD5(xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne) \
     603    void (CALLBACK *xfn)(ICOM_INTERFACE* me,ta a,tb b,tc c,td d,te e);
     604#define ICOM_VMETHOD6(xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne,tf,nf) \
     605    void (CALLBACK *xfn)(ICOM_INTERFACE* me,ta a,tb b,tc c,td d,te e,tf f);
     606#define ICOM_VMETHOD7(xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne,tf,nf,tg,ng) \
     607    void (CALLBACK *xfn)(ICOM_INTERFACE* me,ta a,tb b,tc c,td d,te e,tf f,tg g);
     608#define ICOM_VMETHOD8(xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne,tf,nf,tg,ng,nh) \
     609    void (CALLBACK *xfn)(ICOM_INTERFACE* me,ta a,tb b,tc c,td d,te e,tf f,tg g,th h);
     610
     611#define ICOM_CVMETHOD(xfn) \
     612        void (CALLBACK *xfn)(const ICOM_INTERFACE* me);
     613#define ICOM_CVMETHOD1(xfn,ta,na) \
     614    void (CALLBACK *xfn)(const ICOM_INTERFACE* me,ta a);
     615#define ICOM_CVMETHOD2(xfn,ta,na,tb,nb) \
     616    void (CALLBACK *xfn)(const ICOM_INTERFACE* me,ta a,tb b);
     617#define ICOM_CVMETHOD3(xfn,ta,na,tb,nb,tc,nc) \
     618    void (CALLBACK *xfn)(const ICOM_INTERFACE* me,ta a,tb b,tc c);
     619#define ICOM_CVMETHOD4(xfn,ta,na,tb,nb,tc,nc,td,nd) \
     620    void (CALLBACK *xfn)(const ICOM_INTERFACE* me,ta a,tb b,tc c,td d);
     621#define ICOM_CVMETHOD5(xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne) \
     622    void (CALLBACK *xfn)(const ICOM_INTERFACE* me,ta a,tb b,tc c,td d,te e);
     623#define ICOM_CVMETHOD6(xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne,tf,nf) \
     624    void (CALLBACK *xfn)(const ICOM_INTERFACE* me,ta a,tb b,tc c,td d,te e,tf f);
     625#define ICOM_CVMETHOD7(xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne,tf,nf,tg,ng) \
     626    void (CALLBACK *xfn)(const ICOM_INTERFACE* me,ta a,tb b,tc c,td d,te e,tf f,tg g);
     627#define ICOM_CVMETHOD8(xfn,ta,na,tb,nb,tc,nc,td,nd,te,ne,tf,nf,tg,ng,th,nh) \
     628    void (CALLBACK *xfn)(const ICOM_INTERFACE* me,ta a,tb b,tc c,td d,te e,tf f,tg g,th h);
     629
     630#define ICOM_CALL(xfn, p)                       ICOM_VTBL(p)->xfn(p)
     631#define ICOM_CALL1(xfn, p,a)                    ICOM_VTBL(p)->xfn(p,a)
     632#define ICOM_CALL2(xfn, p,a,b)                  ICOM_VTBL(p)->xfn(p,a,b)
     633#define ICOM_CALL3(xfn, p,a,b,c)                ICOM_VTBL(p)->xfn(p,a,b,c)
     634#define ICOM_CALL4(xfn, p,a,b,c,d)              ICOM_VTBL(p)->xfn(p,a,b,c,d)
     635#define ICOM_CALL5(xfn, p,a,b,c,d,e)            ICOM_VTBL(p)->xfn(p,a,b,c,d,e)
     636#define ICOM_CALL6(xfn, p,a,b,c,d,e,f)          ICOM_VTBL(p)->xfn(p,a,b,c,d,e,f)
     637#define ICOM_CALL7(xfn, p,a,b,c,d,e,f,g)        ICOM_VTBL(p)->xfn(p,a,b,c,d,e,f,g)
     638#define ICOM_CALL8(xfn, p,a,b,c,d,e,f,g,h)      ICOM_VTBL(p)->xfn(p,a,b,c,d,e,f,g,h)
     639#define ICOM_CALL9(xfn, p,a,b,c,d,e,f,g,h,i)    ICOM_VTBL(p)->xfn(p,a,b,c,d,e,f,g,h,i)
     640#define ICOM_CALL10(xfn, p,a,b,c,d,e,f,g,h,i,j) ICOM_VTBL(p)->xfn(p,a,b,c,d,e,f,g,h,i,j)
     641
     642#endif /* __WINE__ */
    601643
    602644#ifdef ICOM_MSVTABLE_COMPAT
     
    604646    typedef struct ICOM_VTABLE(iface) ICOM_VTABLE(iface); \
    605647    struct iface { \
    606         const ICOM_VTABLE(iface)* lpvtbl; \
     648        const ICOM_VFIELD(iface); \
    607649    }; \
    608650    struct ICOM_VTABLE(iface) { \
     
    618660    typedef struct ICOM_VTABLE(iface) ICOM_VTABLE(iface); \
    619661    struct iface { \
    620         const ICOM_VTABLE(iface)* lpvtbl; \
     662        const ICOM_VFIELD(iface); \
    621663    }; \
    622664    struct ICOM_VTABLE(iface) { \
     
    626668#define ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
    627669#endif /* ICOM_MSVTABLE_COMPAT */
    628 
    629 
    630 #define ICOM_CALL(xfn, p)  (p)->lpvtbl->fn##xfn(p)
    631 #define ICOM_CALL1(xfn, p,a) (p)->lpvtbl->fn##xfn(p,a)
    632 #define ICOM_CALL2(xfn, p,a,b) (p)->lpvtbl->fn##xfn(p,a,b)
    633 #define ICOM_CALL3(xfn, p,a,b,c) (p)->lpvtbl->fn##xfn(p,a,b,c)
    634 #define ICOM_CALL4(xfn, p,a,b,c,d) (p)->lpvtbl->fn##xfn(p,a,b,c,d)
    635 #define ICOM_CALL5(xfn, p,a,b,c,d,e) (p)->lpvtbl->fn##xfn(p,a,b,c,d,e)
    636 #define ICOM_CALL6(xfn, p,a,b,c,d,e,f) (p)->lpvtbl->fn##xfn(p,a,b,c,d,e,f)
    637 #define ICOM_CALL7(xfn, p,a,b,c,d,e,f,g) (p)->lpvtbl->fn##xfn(p,a,b,c,d,e,f,g)
    638 #define ICOM_CALL8(xfn, p,a,b,c,d,e,f,g,h) (p)->lpvtbl->fn##xfn(p,a,b,c,d,e,f,g,h)
    639 #define ICOM_CALL9(xfn, p,a,b,c,d,e,f,g,h,i) (p)->lpvtbl->fn##xfn(p,a,b,c,d,e,f,g,h,i)
    640 #define ICOM_CALL10(xfn, p,a,b,c,d,e,f,g,h,i,j) (p)->lpvtbl->fn##xfn(p,a,b,c,d,e,f,g,h,i,j)
    641670
    642671
     
    672701typedef struct ICOM_VTABLE(IUnknown) ICOM_VTABLE(IUnknown);
    673702struct IUnknown {
    674     ICOM_VTABLE(IUnknown)* lpvtbl;
     703    ICOM_VFIELD(IUnknown);
    675704#if defined(ICOM_USE_COM_INTERFACE_ATTRIBUTE) && !defined(ICOM_CINTERFACE)
    676 } __attribute__ ((com_interface));
     705} __attribute__ ((com_interface)); 
    677706#else
    678707};
     
    696725#undef ICOM_INTERFACE
    697726
    698 #ifdef ICOM_CINTERFACE
    699727/*** IUnknown methods ***/
    700728#define IUnknown_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
    701729#define IUnknown_AddRef(p)             ICOM_CALL (AddRef,p)
    702730#define IUnknown_Release(p)            ICOM_CALL (Release,p)
    703 #endif
    704731
    705732/*****************************************************************************
     
    716743#undef ICOM_INTERFACE
    717744
    718 #ifdef ICOM_CINTERFACE
    719745/*** IUnknown methods ***/
    720746#define IClassFactory_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
     
    724750#define IClassFactory_CreateInstance(p,a,b,c) ICOM_CALL3(CreateInstance,p,a,b,c)
    725751#define IClassFactory_LockServer(p,a)         ICOM_CALL1(LockServer,p,a)
    726 #endif
    727752
    728753
     
    744769#undef ICOM_INTERFACE
    745770
    746 #ifdef ICOM_CINTERFACE
    747771/*** IUnknown methods ***/
    748772#define IMalloc16_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
     
    756780#define IMalloc16_DidAlloc(p,a)   ICOM_CALL1(DidAlloc,p,a)
    757781#define IMalloc16_HeapMinimize(p) ICOM_CALL (HeapMinimize,p)
    758 #endif
    759782
    760783
     
    773796#undef ICOM_INTERFACE
    774797
    775 #ifdef ICOM_CINTERFACE
    776798/*** IUnknown methods ***/
    777799#define IMalloc_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
     
    785807#define IMalloc_DidAlloc(p,a)   ICOM_CALL1(DidAlloc,p,a)
    786808#define IMalloc_HeapMinimize(p) ICOM_CALL (HeapMinimize,p)
    787 #endif
    788809
    789810
Note: See TracChangeset for help on using the changeset viewer.