home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / epm603b.zip / EPMCSAMP.ZIP / EPMCSAMP / INCLUDE / ETKTYPES.H < prev    next >
Text File  |  1995-04-07  |  8KB  |  188 lines

  1. #ifndef ETKTYPES_INCLUDED
  2.   #define ETKTYPES_INCLUDED
  3.  
  4.   /* as of June 1992, we are still using lstrings with      */
  5.   /* byte length fields.  We expect this to change shortly. */
  6.   /* When this change occurs, LSTRINGLENTYPELEN will also   */
  7.   /* change.                                                */
  8.  
  9.   #define  LSTRINGLENTYPELEN 2
  10.  
  11.  
  12.   #if LSTRINGLENTYPELEN == 1
  13.      #define  LSTRINGLENTYPE UCHAR
  14.      // CPLSZ is Constant PLSTRING PSZ string
  15.      #define MAKECPLSZ(l,s) l s
  16.      #ifndef MAXCOL
  17.         #define MAXCOL 255
  18.      #endif
  19.   #elif LSTRINGLENTYPELEN == 2
  20.      #define  LSTRINGLENTYPE USHORT
  21.      #define MAKECPLSZ(l,s) l "\0" s
  22.      #ifndef MAXCOL
  23.         #define MAXCOL 1600
  24.      #endif
  25.   #else
  26.      #error New macro definition needed!
  27.   #endif
  28.   #define CONSTPLSTRING(l,s) ((PLSTRING)(MAKECPLSZ(l,s)))
  29.  
  30.   #define LSTRINGSTRUCT(dlength) \
  31.      struct { \
  32.         LSTRINGLENTYPE lsLength; \
  33.         unsigned char  Data[dlength]; \
  34.      }
  35.  
  36.  
  37.   typedef LSTRINGSTRUCT(MAXCOL)
  38.   LSTRING, *PLSTRING, **PPLSTRING;
  39.  
  40.   #define sizeofLSTRING(len) ((len)+sizeof(LSTRINGLENTYPE))
  41.   #define MAXCOLP1x sizeofLSTRING(MAXCOL)
  42.  
  43.   //#define sizeofLSTRING(len) sizeof(LSTRINGSTRUCT(len))
  44.  
  45.  
  46.   /* LSTRLOCDECL(name,charlen) provides a way to create a local LSTRING variable       */
  47.   /*   of arbitrary size that is known at compile time. This approach is a bit kludgy  */
  48.   /*   but it seems necessary since C does not provide for variable length structures. */
  49.  
  50.   #define LSTRLOCDECL(name,charlen)  CHAR name##XXXXX [sizeofLSTRING(charlen)]; PLSTRING const name = (PLSTRING) name##XXXXX
  51.  
  52.  
  53.    //The following flags are used for the EFRAMEM_QUERYFILEINFO &
  54.    //                                     EPM_EDIT_QUERYFILEINFO messages
  55.    #define QF_MODIFY      1
  56.    #define QF_NAME        2
  57.    #define QF_MARKTYPE    3
  58.    #define QF_POINTER     4
  59.    #define QF_HWND        5
  60.    #define QF_TITLETEXT   6
  61.    #define QF_FILESINRING 7
  62.    #define QF_FILESIZE    8
  63.    #define QF_ICONTEXT    9
  64.    #define QF_MARKSIZE   10
  65.  
  66.    typedef struct {
  67.      USHORT Message;
  68.      MPARAM Mp1;
  69.      MPARAM Mp2;
  70.    } EIQMESSAGE, *PEIQMESSAGE;
  71.  
  72.    //structure used for EFRAMEM_QUERYSTATUSINFO, & EPM_EDIT_QUERYSTATUSINFO
  73.    typedef struct {
  74.       UCHAR insert, modify, zchar, readonly;
  75.       USHORT autosave, views;
  76.       ULONG row, col, size;
  77.    } STATUSINFO, *PSTATUSINFO;
  78.  
  79.  
  80.  
  81.  
  82.    #if OS2VERSION == 20
  83.      #define PFUNC(CallingConvention, FunctionPtr) (* CallingConvention FunctionPtr)
  84.      #define PFUNCPROT(CallingConvention) (* CallingConvention)
  85.      #define MSG ULONG
  86.    #else
  87.      #define PFUNC(CallingConvention, FunctionPtr)  (CallingConvention * FunctionPtr)
  88.      #define PFUNCPROT(CallingConvention)  (CallingConvention *)
  89.      typedef PVOID *PPVOID;
  90.      #define MSG USHORT
  91.    #endif
  92.  
  93.    #if OS2VERSION >= 20
  94.       typedef ULONG PascalFunc(VOID);
  95.       #pragma linkage (PascalFunc, far16 pascal)
  96.       typedef ULONG C16Func(VOID);
  97.       #pragma linkage (C16Func, far16 cdecl)
  98.       typedef ULONG SysFunc(VOID);
  99.       #pragma linkage (SysFunc, system)
  100.    #endif
  101.  
  102.    typedef union {
  103.          #if OS2VERSION < 20
  104.             ULONG   PFUNC(APIENTRY, pPasProcLong)(VOID); // address of function (Pascal) returning a long
  105.             USHORT  PFUNC(APIENTRY, pProc)(VOID);     // address of function (Pascal) returning a short
  106.             ULONG   PFUNC(cdecl,    cProcLong)(VOID); // address of function (C) returning a long
  107.             USHORT  PFUNC(cdecl,    cProc)(VOID);     // address of function (C) returning a short
  108.          #else
  109.             //ULONG   (*  pProcLong)(VOID); // address of function (Pascal) returning a long
  110.             PascalFunc *pPasProcLong;
  111.             C16Func *pC16ProcLong;
  112.             SysFunc *pSysProcLong;
  113.             USHORT  (* _System pProc)(VOID);     // address of function (Pascal) returning a short
  114.             ULONG   (* _System cProcLong)(VOID); // address of function (C) returning a long
  115.             USHORT  (* _System cProc)(VOID);     // address of function (C) returning a short
  116.             PVOID _Seg16    pv16;
  117.          #endif
  118.          ULONG   ul;
  119.          PVOID           pv;
  120.          #ifdef USE_NO_ASSEMBLER
  121.             ULONG   (* _System SysProc0)(VOID);
  122.             ULONG   (* _System SysProc1)(ULONG);
  123.             ULONG   (* _System SysProc2)(ULONG, ULONG);
  124.             ULONG   (* _System SysProc3)(ULONG, ULONG, ULONG);
  125.             ULONG   (* _System SysProc4)(ULONG, ULONG, ULONG, ULONG);
  126.             ULONG   (* _System SysProc5)(ULONG, ULONG, ULONG, ULONG, ULONG);
  127.             ULONG   (* _System SysProc6)(ULONG, ULONG, ULONG, ULONG, ULONG, ULONG);
  128.             ULONG   (* _System SysProc7)(ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG);
  129.             ULONG   (* _System SysProc8)(ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG);
  130.             ULONG   (* _System SysProc9)(ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG);
  131.             ULONG   (* _System SysProc10)(ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG);
  132.             ULONG   (* _System SysProc11)(ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG,
  133.                                           ULONG);
  134.             ULONG   (* _System SysProc12)(ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG,
  135.                                           ULONG, ULONG);
  136.             ULONG   (* _System SysProc13)(ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG,
  137.                                           ULONG, ULONG, ULONG);
  138.             ULONG   (* _System SysProc14)(ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG,
  139.                                           ULONG, ULONG, ULONG, ULONG);
  140.             ULONG   (* _System SysProc15)(ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG,
  141.                                           ULONG, ULONG, ULONG, ULONG, ULONG);
  142.             ULONG   (* _System SysProc16)(ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG,
  143.                                           ULONG, ULONG, ULONG, ULONG, ULONG, ULONG);
  144.             ULONG   (* _System SysProc17)(ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG,
  145.                                           ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG);
  146.             ULONG   (* _System SysProc18)(ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG,
  147.                                           ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG);
  148.             ULONG   (* _System SysProc19)(ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG,
  149.                                           ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG);
  150.             ULONG   (* _System SysProc20)(ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG,
  151.                                           ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG, ULONG);
  152.          #endif
  153.    } PROCCONV;
  154.  
  155.    // The following type is used to define the parameters needed when
  156.    // executing a procedure using a procedure address.   JAC 8/90
  157.    typedef struct _EPROC {
  158.       PROCCONV ProcConv;
  159.       USHORT  StackSize;                      // stack size in bytes
  160.       USHORT  PascalC;                        // pascal or C convention.
  161.  
  162.       PCHAR   Stack;                          // pointer to the stack data
  163.       USHORT  NumberOfReturnWords;            // number of return words in RC
  164.       USHORT  StackRC;                        // TRUE if error in number of parameters
  165.       ULONG   RC;                             // return value of proc
  166.    } EPROC, *PEPROC;
  167.  
  168.    typedef struct _EPROC2 {
  169.       EPROC   eproc;
  170.       PSZ     pszModule;
  171.       PSZ     pszProc;
  172.       LONG    Flags;
  173.            #define EDED_RESOLVEPROC_FLAG 1
  174.            #define EDED_FREESEG_FLAG 2
  175.            #define EDED_FREEMEM_FLAG 4
  176.    } EPROC2, *PEPROC2;
  177.  
  178. #if OS2VERSION >= 20
  179.    #define MYUINT ULONG
  180. #else
  181.    #define MYUINT USHORT
  182. #endif
  183.  
  184.    #define  min(a,b)        (((a) < (b)) ? (a) : (b))
  185.    #define  max(a,b)        (((a) > (b)) ? (a) : (b))
  186.  
  187. #endif
  188.