home *** CD-ROM | disk | FTP | other *** search
/ Chip 1997 January / Chip_1997-01_cd.bin / ms95 / disk22 / dir04 / f011290.re_ / f011290.re
Text File  |  1996-04-02  |  6KB  |  193 lines

  1. /*----------------------------------------------------------------------+
  2. |                                    |
  3. |  Copyright (c) 1985-93;  Bentley Systems, Inc., All rights reserved.    |
  4. |                                    |
  5. | "MicroStation", "MDL", and "MicroCSL" are trademarks of Bentley    |
  6. |  Systems, Inc.                            |
  7. |                                    |
  8. |  Limited permission is hereby granted to reproduce and modify this    |
  9. |  copyrighted material provided that the resulting code is used only     |
  10. |  in conjunction with Bentley Systems products under the terms of the    |
  11. |  license agreement provided therein, and that this notice is retained    |
  12. |  in its entirety in any such reproduction or modification.        |
  13. |                                    |
  14. +----------------------------------------------------------------------*/
  15. /*----------------------------------------------------------------------+
  16. |                                    |
  17. |   extern.h -- describes how MicroStation interacts with external    |
  18. |        programs.                        |
  19. |                                    |
  20. |   $Workfile:   msextern.h  $
  21. |   $Revision:   6.4  $
  22. |          $Date:   11 Apr 1995 14:41:40  $
  23. |                                    |
  24. +----------------------------------------------------------------------*/
  25. #ifndef __msexternH__
  26. #define __msexternH__
  27.  
  28. /* .h File Dependencies */
  29. #ifndef __basedefsH__
  30. #include    <basedefs.h>
  31. #endif
  32. #ifndef __msdefsH__
  33. #include    <msdefs.h>
  34. #endif
  35. #ifndef    __basetypeH__
  36. #include    <basetype.h>
  37. #endif
  38.  
  39. /*----------------------------------------------------------------------+
  40. |                                    |
  41. |   Defines                                |
  42. |                                    |
  43. +----------------------------------------------------------------------*/
  44.  
  45. #if defined (mdl) || !defined (unix)
  46. #define IPC_NOWAIT    1
  47. #endif
  48.  
  49. #define        EXTP_KEY_GENERATE        0
  50. #define        EXTP_NAME_SIZE        20
  51.  
  52. /*  Operators for mdlExternal_queueGet  */
  53. #define        EXTP_QUEUE_ATTACH        1
  54. #define        EXTP_QUEUE_CREATE        2
  55.  
  56. /*  Status for MsgQDescr    */
  57. #define        EXTP_QUEUE_INUSE        1
  58. #define        EXTP_QUEUE_FREE        2
  59.  
  60. /*  Message types    */
  61. #define        EXTP_FOR_MDL        1
  62. #define        EXTP_FOR_APPL        3
  63.  
  64. #define        EXTP_STATUS_NOTIFIED    -2
  65. #define        EXTP_STATUS_TERMINATED    -1
  66. #define        EXTP_STATUS_ACTIVE         1
  67.  
  68. /*  Parameters for mdlExternal_setQueueProperty  */
  69. #if defined (unix)
  70. #   define  EXTP_PROPERTY_REMOVE    1    /*  Remove when the queue is closed */
  71. #   define  EXTP_PROPERTY_SEND_TYPE    2
  72. #   define  EXTP_PROPERTY_RECEIVE_TYPE    3
  73. #endif
  74. #define        EXTP_PROPERTY_ASYNCH_RECEIVE 4
  75.  
  76.  
  77. #if defined (pm386)
  78. /*  Declare the shared memory storage class.  */
  79. #define        SHMEM_SC            _far
  80. #else
  81. #define        SHMEM_SC
  82. #endif
  83.  
  84. /*----------------------------------------------------------------------+
  85. |                                    |
  86. |   Typedefs                                |
  87. |                                    |
  88. +----------------------------------------------------------------------*/
  89. typedef    long    msgqID_t;
  90.  
  91. #if defined (unix)
  92. #   if !defined (mdl)
  93. #    include <sys/types.h>
  94.  
  95. /*    unix gets undef'ed on the HP */
  96. #      if !defined (unix)
  97. #        define unix 1
  98. #      endif
  99.  
  100. #   else
  101.     typedef long key_t;
  102. #   endif
  103. #endif
  104.  
  105. #if defined (macintosh)
  106. #   if !defined (mdl)
  107. #    include <Processes.h>
  108. #   else
  109.     /* can't include Processes.h, so define ProcessSerialNumber here */
  110.     typedef struct processserialnumber
  111.         {
  112.         unsigned long highLongOfPSN;
  113.         unsigned long lowLongOfPSN;
  114.         } ProcessSerialNumber;
  115. #   endif
  116. #endif
  117.  
  118. #if defined (unix)
  119. typedef long    ProcessID;
  120. typedef    key_t    IPCKey;
  121. #elif defined (msdos)
  122. typedef long    ProcessID;
  123. typedef    long    IPCKey;
  124. #elif defined (macintosh)
  125. typedef ProcessSerialNumber ProcessID;
  126. typedef    long    IPCKey;
  127. #elif defined (vax)
  128. typedef long    ProcessID;
  129. typedef long    IPCKey;
  130. #elif defined (winNT)
  131. typedef ULong    ProcessID;
  132. typedef ULong    IPCKey;
  133. #elif defined (os2)
  134. typedef ULong    ProcessID;
  135. typedef ULong    IPCKey;
  136. #else
  137. typedef long    ProcessID;
  138. typedef    key_t    IPCKey;
  139. #endif
  140.  
  141. typedef struct mdlmessage
  142.     {
  143.     long        mtype;
  144.     long        msglength;        /* number of bytes in request mtext */
  145.     ProcessID        sendpid;        /* filled in by MDL.  */
  146.     long        reqtype;        /* request type */
  147.     char        mtext [1];
  148.     } ExternalMessage;
  149.  
  150. typedef struct mdlmsghdr
  151.     {
  152.     long        mtype;
  153.     long        msglength;        /* number of bytes in request mtext */
  154.     ProcessID        sendpid;        /* filled in by MDL.  */
  155.     long        reqtype;        /* request type */
  156.     } ExternalMsgHeader;
  157.  
  158. typedef struct MSexternalProgramDescr
  159.     {
  160.     char        name[MAXFILELENGTH]; /* child program's name */
  161.     char       *pCommandLine;
  162.     ProcessID        pid;         /* process id that we started */
  163.     char        status;         /* negative means the program
  164.                         has terminated. Set to one of
  165.                         the EXTP_STATUS_ flags. */
  166.     int            exitStatus;
  167.     } MSExternalProgramDescr;
  168.  
  169. typedef struct MSmsgqDescr
  170.     {
  171.     IPCKey        messageKey;        /* key for msg queue to/from process */
  172.     char        externalName[EXTP_NAME_SIZE];  /*  Name used for external
  173.                                programs to get access.    */
  174.     int            msgqID;        /* message queue id */
  175.     byte        status;
  176.     byte        rcvType;
  177.     } MSMsgqDescr;
  178.  
  179. typedef struct MSshmemDescr
  180.     {
  181.     char       *psharedMem;
  182.     IPCKey        shmemKey;        /* name to pass to process */
  183.     char        externalName [EXTP_NAME_SIZE];  /* Name used for external
  184.                                programs to get access. */
  185.     int            shmemID;        /* shared memory id */
  186.     byte        status;
  187. #if defined (pm386) && !defined (mdl) && !defined (ORACLEDOS)
  188.     SHMEM_SC char  *shMemFP;        /* far pointer to shared memory */
  189. #endif
  190.     } MSShmemDescr;
  191.  
  192. #endif
  193.