|##########|
|#MAGIC   #|CLABLMDD
|#PROJECT #|"IMPORTALL"
|#PATHS   #|"StdProject"
|#FLAGS   #|xx-x-x--x---x-x-----------------
|#USERSW  #|--------------------------------
|#USERMASK#|--------------------------------
|#SWITCHES#|x-xx-x----------
|##########|
DEFINITION MODULE Clipboard;
(* $A- *)

FROM T_Exec     IMPORT nonstdVAL,NoFreeSignal,OpenError,
                       Node,Message,IOStdReq,DevicePtr,IOFlagSet,
                       IOCommand,IOReturn,UnitPtr;
FROM Resources  IMPORT ContextPtr;

CONST
  primaryClip = 0;

  post            = IOCommand( nonstdVAL + 0 );
  currentReadId   = IOCommand( nonstdVAL + 1 );
  currentWrite    = IOCommand( nonstdVAL + 2 );
  changeHook      = IOCommand( nonstdVAL + 3 );

  obsoleteId      = IOReturn( 1 );

TYPE
  ClipboardUnitPartialPtr = POINTER TO ClipboardUnitPartial;
  ClipboardUnitPartial    = RECORD OF Node
                              unitNum : LONGCARD
                            END;

  IOClipboardPtr          = POINTER TO IOClipboard;
  IOClipboard             = RECORD OF IOStdReq
                              clipID : LONGINT;
                            END;

  SatisfyMsgPtr           =  POINTER TO SatisfyMsg;
  SatisfyMsg              =  RECORD OF Message
                               unit   : CARDINAL;
                               clipID : LONGINT;
                             END;

  ClipHookMsgPtr          = POINTER TO ClipHookMsg;
  ClipHookMsg             = RECORD
                              type      : LONGCARD;
                              changeCmd : LONGINT;
                              clipID    : LONGCARD;
                            END;

PROCEDURE OpenClipboard( unit    : CARDINAL  := primaryClip;
                         context : ContextPtr:=NIL): IOClipboardPtr;

PROCEDURE CloseClipboard( VAR request : IOClipboardPtr );

GROUP
  All     = post,                     currentReadId,
            currentWrite,             obsoleteId,
            ClipboardUnitPartial,     ClipboardUnitPartialPtr,
            IOClipboard,              IOClipboardPtr,
            primaryClip,              SatisfyMsg,
            SatisfyMsgPtr,
            OpenClipboard,            CloseClipboard,
            T_Exec.ExecIOGrp;

END Clipboard.
