home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / mod201j.zip / modula2.exe / os2api / windef.mod < prev    next >
Text File  |  1995-08-24  |  4KB  |  164 lines

  1. IMPLEMENTATION MODULE WINDEF;
  2.  
  3. (*************************************************************************
  4.   OS/2 2.x/3.0 General Window Management type transfer/extract functions.
  5.  
  6.   Note: This set of procedures has been implemented for the sake
  7.         of closer compatibility with IBM C header file PMWIN.H.
  8.         They are almost obsolete for this compiler because of Modula's
  9.         type transfer facility.
  10.  
  11.   Copyright (c) 1992, 1995 by Juergen Neuhoff
  12. **************************************************************************)
  13.  
  14. (*$XL+       Modula-2 language extensions: '_' allowed for symbol names *)
  15. (*$CDECL+    C-style procedures                                         *)
  16. (*$A         default alignment for record fields                        *)
  17.  
  18. FROM   SYSTEM  IMPORT ADDRESS, BYTE, WORD, LONGWORD;
  19. FROM   OS2DEF  IMPORT HWND, PCHAR, PSZ;
  20.  
  21.  
  22. (*** function procedures to make an MPARAM from standard types. *********)
  23.  
  24. PROCEDURE MPFROMP( p:ADDRESS ):MPARAM;
  25. BEGIN
  26.   RETURN MPARAM( LONGCARD( p ) );
  27. END MPFROMP;
  28.  
  29. PROCEDURE MPFROMHWND( WinHandle:HWND ):MPARAM;
  30. BEGIN
  31.   RETURN MPARAM( WinHandle );
  32. END MPFROMHWND;
  33.  
  34. PROCEDURE MPFROMCHAR( ch:BYTE ):MPARAM;
  35. BEGIN
  36.   RETURN MPARAM( LONGCARD( SHORTCARD( ch ) ) );
  37. END MPFROMCHAR;
  38.  
  39. PROCEDURE MPFROMSHORT( s:WORD ):MPARAM;
  40. BEGIN
  41.   RETURN MPARAM( LONGCARD( CARDINAL( s ) ) );
  42. END MPFROMSHORT;
  43.  
  44. PROCEDURE MPFROM2SHORT( l,h:WORD ):MPARAM;
  45. BEGIN
  46.   RETURN MPARAM
  47.   ( LONGCARD( CARDINAL( l ) ) + LONGCARD( CARDINAL( h ) ) SHL 16 );
  48. END MPFROM2SHORT;
  49.  
  50. PROCEDURE MPFROMSH2CH( l:WORD; hl,hh:BYTE ):MPARAM;
  51. BEGIN
  52.   RETURN MPFROM2SHORT
  53.   ( l, CARDINAL( SHORTCARD( hl ) ) + CARDINAL( SHORTCARD( hh ) ) SHL 8 );
  54. END MPFROMSH2CH;
  55.  
  56. PROCEDURE MPFROMLONG( l:LONGWORD ):MPARAM;
  57. BEGIN
  58.   RETURN MPARAM( l );
  59. END MPFROMLONG;
  60.  
  61.  
  62. (*** function procedures to extract standard types from an MPARAM *******)
  63.  
  64. PROCEDURE PVOIDFROMMP( mp:MPARAM ):ADDRESS;
  65. BEGIN
  66.   RETURN ADDRESS( mp );
  67. END PVOIDFROMMP;
  68.  
  69. PROCEDURE HWNDFROMMP( mp:MPARAM ):HWND;
  70. BEGIN
  71.   RETURN HWND( mp );
  72. END HWNDFROMMP;
  73.  
  74. PROCEDURE CHAR1FROMMP( mp:MPARAM ):CHAR;
  75. BEGIN
  76.   RETURN CHAR( SHORTCARD( LONGCARD( mp ) ) );
  77. END CHAR1FROMMP;
  78.  
  79. PROCEDURE CHAR2FROMMP( mp:MPARAM ):CHAR;
  80. BEGIN
  81.   RETURN CHAR( SHORTCARD( LONGCARD( mp ) SHR 8 ) );
  82. END CHAR2FROMMP;
  83.  
  84. PROCEDURE CHAR3FROMMP( mp:MPARAM ):CHAR;
  85. BEGIN
  86.   RETURN CHAR( SHORTCARD( LONGCARD( mp ) SHR 16 ) );
  87. END CHAR3FROMMP;
  88.  
  89. PROCEDURE CHAR4FROMMP( mp:MPARAM ):CHAR;
  90. BEGIN
  91.   RETURN CHAR( SHORTCARD( LONGCARD( mp ) SHR 24 ) );
  92. END CHAR4FROMMP;
  93.  
  94. PROCEDURE SHORT1FROMMP( mp:MPARAM ):CARDINAL;
  95. BEGIN
  96.   RETURN CARDINAL( LONGCARD( mp ) );
  97. END SHORT1FROMMP;
  98.  
  99. PROCEDURE SHORT2FROMMP( mp:MPARAM ):CARDINAL;
  100. BEGIN
  101.   RETURN CARDINAL( LONGCARD( mp ) SHR 16 );
  102. END SHORT2FROMMP;
  103.  
  104. PROCEDURE LONGFROMMP( mp:MPARAM ):LONGCARD;
  105. BEGIN
  106.   RETURN LONGCARD( mp );
  107. END LONGFROMMP;
  108.  
  109.  
  110. (*** function procedures to make an MRESULT from standard types. ********)
  111.  
  112. PROCEDURE MRFROMP( p:ADDRESS ):MRESULT;
  113. BEGIN
  114.   RETURN MRESULT( p );
  115. END MRFROMP;
  116.  
  117. PROCEDURE MRFROMSHORT( s:WORD ):MRESULT;
  118. BEGIN
  119.   RETURN MRESULT( LONGCARD( CARDINAL( s ) ) );
  120. END MRFROMSHORT;
  121.  
  122. PROCEDURE MRFROM2SHORT( l,h:WORD ):MRESULT;
  123. BEGIN
  124.   RETURN MRESULT
  125.   ( LONGCARD( CARDINAL( l ) ) + LONGCARD( CARDINAL( h ) ) SHL 16 );
  126. END MRFROM2SHORT;
  127.  
  128. PROCEDURE MRFROMLONG( l:LONGWORD ):MRESULT;
  129. BEGIN
  130.   RETURN MRESULT( l );
  131. END MRFROMLONG;
  132.  
  133.  
  134. (*** function procedures to extract standard types from an MRESULT ******)
  135.  
  136. PROCEDURE PVOIDFROMMR( mr:MRESULT ):PVOID;
  137. BEGIN
  138.   RETURN PVOID( mr );
  139. END PVOIDFROMMR;
  140.  
  141. PROCEDURE SHORT1FROMMR( mr:MRESULT  ):CARDINAL;
  142. BEGIN
  143.   RETURN SHORT( LONGCARD( mr ) );
  144. END SHORT1FROMMR;
  145.  
  146. PROCEDURE SHORT2FROMMR( mr:MRESULT ):CARDINAL;
  147. BEGIN
  148.   RETURN SHORT( LONGCARD( mr ) SHR 16 );
  149. END SHORT2FROMMR;
  150.  
  151. PROCEDURE LONGFROMMR( mr:MRESULT ):LONGCARD;
  152. BEGIN
  153.   RETURN LONGCARD( mr );
  154. END LONGFROMMR;
  155.  
  156. PROCEDURE MAKEINTATOM( a:SYSTEM.LONGWORD ):PCHAR;
  157. BEGIN
  158.   RETURN PCHAR( LONGCARD( a ) OR 0FFFF0000H );
  159. END MAKEINTATOM;
  160.  
  161. BEGIN
  162.   MPVOID := MPARAM( 0 );
  163. END WINDEF.
  164.