Ignore:
Timestamp:
Feb 12, 2004, 4:21:45 PM (22 years ago)
Author:
bird
Message:

Extended to third calling convention syntax.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/testcase/572main.cpp

    • Property cvs2svn:cvs-rev changed from 1.4 to 1.5
    r1231 r1232  
    7070typedef int     (_Optlink   Typedef2Int)(int a, int b, int c, int d);
    7171typedef PTYPE   (_Optlink   Typedef2PType)(int a, int b, int c, int d);
     72#ifdef __EMX__
     73typedef void    _Optlink   (Typedef3Void)(int a, int b, int c, int d);
     74typedef void *  _Optlink   (Typedef3PVoid)(int a, int b, int c, int d);
     75typedef int     _Optlink   (Typedef3Int)(int a, int b, int c, int d);
     76typedef PTYPE   _Optlink   (Typedef3PType)(int a, int b, int c, int d);
     77#endif
    7278
    7379typedef void    (* _Optlink PTypedef1Void)(int a, int b, int c, int d);
     
    8187typedef int     (_Optlink * PTypedef2Int)(int a, int b, int c, int d);
    8288typedef PTYPE   (_Optlink * PTypedef2PType)(int a, int b, int c, int d);
     89#ifdef __EMX__
     90/* Alternate writing which should have the same effect I think... */
     91typedef void    _Optlink (* PTypedef3Void)(int a, int b, int c, int d);
     92typedef void *  _Optlink (* PTypedef3PVoid)(int a, int b, int c, int d);
     93typedef int     _Optlink (* PTypedef3Int)(int a, int b, int c, int d);
     94typedef PTYPE   _Optlink (* PTypedef3PType)(int a, int b, int c, int d);
     95#endif
    8396
    8497
     
    99112    int     (_Optlink * PStructMember2Int)(int a, int b, int c, int d);
    100113    PTYPE   (_Optlink * PStructMember2PType)(int a, int b, int c, int d);
     114#ifdef __EMX__
     115    /* Alternate writing which should have the same effect I think... */
     116    void    _Optlink (* PStructMember3Void)(int a, int b, int c, int d);
     117    void *  _Optlink (* PStructMember3PVoid)(int a, int b, int c, int d);
     118    int     _Optlink (* PStructMember3Int)(int a, int b, int c, int d);
     119    PTYPE   _Optlink (* PStructMember3PType)(int a, int b, int c, int d);
     120#endif
    101121
    102122} VFT, *PVFT;
     
    116136int     (_Optlink * PVar2Int)(int a, int b, int c, int d);
    117137PTYPE   (_Optlink * PVar2PType)(int a, int b, int c, int d);
     138#ifdef __EMX__
     139void    _Optlink (* PVar3Void)(int a, int b, int c, int d);
     140void *  _Optlink (* PVar3PVoid)(int a, int b, int c, int d);
     141int     _Optlink (* PVar3Int)(int a, int b, int c, int d);
     142PTYPE   _Optlink (* PVar3PType)(int a, int b, int c, int d);
     143#endif
    118144
    119145
     
    130156    int     (_Optlink * pfn2Int)(int a, int b, int c, int d),
    131157    PTYPE   (_Optlink * pfn2PType)(int a, int b, int c, int d)
     158#ifdef __EMX__
     159    ,
     160    void    _Optlink (* pfn3Void)(int a, int b, int c, int d),
     161    void *  _Optlink (* pfn3PVoid)(int a, int b, int c, int d),
     162    int     _Optlink (* pfn3Int)(int a, int b, int c, int d),
     163    PTYPE   _Optlink (* pfn3PType)(int a, int b, int c, int d)
     164#endif
    132165    )
    133166{
     
    141174    pfn2Int(1,2,3,4);
    142175    pfn2PType(1,2,3,4);
     176#ifdef __EMX__
     177    pfn3Void(1,2,3,4);
     178    pfn3PVoid(1,2,3,4);
     179    pfn3Int(1,2,3,4);
     180    pfn3PType(1,2,3,4);
     181#endif
    143182    return 0;
    144183}
     184
     185/* @todo: extend and fix this */
     186extern void ParamArgs_1(void (_Optlink *)(void));
     187extern void ParamArgs_2(void (* _Optlink fixme) (void));
     188#ifdef __EMX__
     189extern void ParamArgs_3(void _Optlink (*)(void));
     190#endif
    145191
    146192
     
    149195{
    150196    static VFT vft = {Void, PVoid, Int, PType,
     197#ifdef __EMX__
     198                      Void, PVoid, Int, PType,
     199#endif
    151200                      Void, PVoid, Int, PType};
    152201
     
    160209    static Typedef2Int        * pfnTypedef2Int    = Int;
    161210    static Typedef2PType      * pfnTypedef2PType  = PType;
     211#ifdef __EMX__
     212    static Typedef3Void       * pfnTypedef3Void   = Void;
     213    static Typedef3PVoid      * pfnTypedef3PVoid  = PVoid;
     214    static Typedef3Int        * pfnTypedef3Int    = Int;
     215    static Typedef3PType      * pfnTypedef3PType  = PType;
     216#endif
    162217
    163218    static PTypedef1Void        pfnPTypedef1Void  = Void;
     
    170225    static PTypedef2Int         pfnPTypedef2Int   = Int;
    171226    static PTypedef2PType       pfnPTypedef2PType = PType;
     227#ifdef __EMX__
     228    static PTypedef3Void        pfnPTypedef3Void  = Void;
     229    static PTypedef3PVoid       pfnPTypedef3PVoid = PVoid;
     230    static PTypedef3Int         pfnPTypedef3Int   = Int;
     231    static PTypedef3PType       pfnPTypedef3PType = PType;
     232#endif
    172233
    173234    PVar1Void   = Void;
     
    180241    PVar2Int    = Int;
    181242    PVar2PType  = PType;
    182 
     243#ifdef __EMX__
     244    PVar3Void   = Void;
     245    PVar3PVoid  = PVoid;
     246    PVar3Int    = Int;
     247    PVar3PType  = PType;
     248#endif
    183249
    184250    /* extern functions */
     
    215281    pfnTypedef2Int(1,2,3,4);
    216282    pfnTypedef2PType(1,2,3,4);
     283#ifdef __EMX__
     284    pfnTypedef3Void(1,2,3,4);
     285    pfnTypedef3PVoid(1,2,3,4);
     286    pfnTypedef3Int(1,2,3,4);
     287    pfnTypedef3PType(1,2,3,4);
     288#endif
    217289
    218290    pfnPTypedef1Void(1,2,3,4);
     
    225297    pfnPTypedef2Int(1,2,3,4);
    226298    pfnPTypedef2PType(1,2,3,4);
     299#ifdef __EMX__
     300    pfnPTypedef3Void(1,2,3,4);
     301    pfnPTypedef3PVoid(1,2,3,4);
     302    pfnPTypedef3Int(1,2,3,4);
     303    pfnPTypedef3PType(1,2,3,4);
     304#endif
    227305
    228306
     
    237315    vft.PStructMember2Int(1,2,3,4);
    238316    vft.PStructMember2PType(1,2,3,4);
     317#ifdef __EMX__
     318    vft.PStructMember3Void(1,2,3,4);
     319    vft.PStructMember3PVoid(1,2,3,4);
     320    vft.PStructMember3Int(1,2,3,4);
     321    vft.PStructMember3PType(1,2,3,4);
     322#endif
    239323
    240324    /* variables */
     
    251335    /* parameters */
    252336    ParamArgs(Void, PVoid, Int, PType,
     337#ifdef __EMX__
     338              Void, PVoid, Int, PType,
     339#endif
    253340              Void, PVoid, Int, PType);
    254341
Note: See TracChangeset for help on using the changeset viewer.