Copyright (C) 1994, Digital Equipment Corp.
by Stephen Harrison
* Here are Modula-3 procedures providing the functionality of C macros.
MODULE; IMPORT Word, Ctypes; TYPE dummy = RECORD unused: Ctypes.int; END; REVEAL HWND = UNTRACED BRANDED "HWND" REF dummy; HHOOK = UNTRACED BRANDED "HHOOK" REF dummy; (** HGDIOBJ = UNTRACED BRANDED "HGDIOBJ" REF dummy; **) HACCEL = UNTRACED BRANDED "HACCEL" REF dummy; HBITMAP = UNTRACED BRANDED "HBITMAP" REF dummy; HBRUSH = UNTRACED BRANDED "HBRUSH" REF dummy; HDC = UNTRACED BRANDED "HDC" REF dummy; HGLRC = UNTRACED BRANDED "HGLRC" REF dummy; HDESK = UNTRACED BRANDED "HDESK" REF dummy; HENHMETAFILE = UNTRACED BRANDED "HENHMETAFILE" REF dummy; HMF = UNTRACED BRANDED "HMF" REF dummy; HEMF = UNTRACED BRANDED "HEMF" REF dummy; HFONT = UNTRACED BRANDED "HFONT" REF dummy; HICON = UNTRACED BRANDED "HICON" REF dummy; HMENU = UNTRACED BRANDED "HMENU" REF dummy; HMETAFILE = UNTRACED BRANDED "HMETAFILE" REF dummy; HINSTANCE = UNTRACED BRANDED "HINSTANCE" REF dummy; HPALETTE = UNTRACED BRANDED "HPALETTE" REF dummy; HPEN = UNTRACED BRANDED "HPEN" REF dummy; HRGN = UNTRACED BRANDED "HRGN" REF dummy; HRSRC = UNTRACED BRANDED "HRSRC" REF dummy; HSTR = UNTRACED BRANDED "HSTR" REF dummy; HWINSTA = UNTRACED BRANDED "HWINSTA" REF dummy; HKL = UNTRACED BRANDED "HKL" REF dummy; <* INLINE *> PROCEDURE WinDef MAKEWORD (a, b: BYTE): WORD = BEGIN RETURN Word.Or(a, Word.Shift(b, 8)); END MAKEWORD; <* INLINE *> PROCEDUREMAKELONG (a, b: WORD): LONG = BEGIN RETURN Word.Or(a, Word.Shift(b, 16)); END MAKELONG; <* INLINE *> PROCEDURELOWORD (l: LONG): WORD = BEGIN RETURN Word.And(l, 16_ffff); END LOWORD; <* INLINE *> PROCEDUREHIWORD (l: LONG): WORD = BEGIN RETURN Word.And(Word.Shift(l, -16), 16_ffff); END HIWORD; <* INLINE *> PROCEDURELOBYTE (w: WORD): BYTE = BEGIN RETURN Word.And(w, 16_ff) END LOBYTE; <* INLINE *> PROCEDUREHIBYTE (w: WORD): BYTE = BEGIN RETURN Word.And(Word.Shift(w, -8), 16_ff); END HIBYTE; BEGIN END WinDef.