home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Mac Game Programming Gurus / TricksOfTheMacGameProgrammingGurus.iso / CodeWarrior Lite / Metrowerks C⁄C++ Lite / Libraries / Runtime / Common Sources / CPlusLib.h next >
Encoding:
C/C++ Source or Header  |  1995-03-16  |  2.0 KB  |  63 lines  |  [TEXT/MMCC]

  1. /************************************************************************/
  2. /*    Project...:    Standard C++ Library                                    */
  3. /*    Name......:    CPlusLib.h                                                */
  4. /*    Purpose...:    C++ specific runtime functions                            */
  5. /*  Copyright.: ©Copyright 1993-95 by metrowerks inc                    */
  6. /************************************************************************/
  7.  
  8. #include <stddef.h>
  9.  
  10. #ifdef __MC68K__
  11.  
  12.     #define THIS_IN_A0        0        //    1: pass this pointer in A0; 0: pass this pointer on stack
  13.  
  14.     #if    THIS_IN_A0
  15.         //    constructor/destructor function pointer definition
  16.         //    only constructors of classes with virtual base classes take an additional
  17.         //    short argument but passing a dummy short doesn't screw up the 68K calling
  18.         //    sequence.
  19.         typedef void (*ConstructorDestructor)(void *:__A0,short);
  20.     #else
  21.         typedef void (*ConstructorDestructor)(void *,short);
  22.     #endif
  23.  
  24. #else
  25.  
  26.     typedef void (*ConstructorDestructor)(void *,short);
  27.  
  28. #endif
  29.  
  30. typedef struct PTMF {
  31.     long    this_delta;                //    delta to this pointer
  32.     long    vtbl_offset;            //    offset in vtable (-1: not a virtual function)
  33.     union {
  34.         void    *func_addr;            //    nonvirtual function address
  35.         long    ventry_offset;        //    offset of virtual function entry in vtable
  36.     }    func_data;
  37. }    PTMF;
  38.  
  39. #ifdef __cplusplus
  40. extern "C" {
  41. #endif
  42.  
  43. #ifdef __MC68K__
  44. extern long        __ptmf_test(const PTMF *ptmf);
  45. extern long        __ptmf_cmpr(const PTMF *ptmf1,const PTMF *ptmf2);
  46. extern void        __ptmf_call(...);
  47. extern void        __ptmf_scall(...);
  48. #endif
  49.  
  50. extern PTMF        *__ptmf_cast(long offset,const PTMF *ptmfrom,PTMF *ptmto);
  51.  
  52. extern void        *__new_hdl(size_t size);
  53. extern void        __del_hdl(void *hdl);
  54. extern void        *__copy(char *to,char *from,size_t size);
  55. extern void        *__init_arr(void *memptr,ConstructorDestructor constructor,size_t object_size,size_t nobjects);
  56. extern void        *__new_arr(ConstructorDestructor constructor,size_t object_size,size_t objects);
  57. extern void        __del_arr(void *memptr,ConstructorDestructor destructor);
  58. extern void        __dc_arr(void *mem,ConstructorDestructor con_des,short object_size,short objects);
  59.  
  60. #ifdef __cplusplus
  61. }
  62. #endif
  63.