Package Name: eppc

Return to: Package List


with Interfaces.C; use Interfaces.C;
with Interfaces.C.Extensions; use Interfaces.C.Extensions;
with Types; use Types;
with Events; use Events;
with PPCToolbox; use PPCToolbox;
with Processes; use Processes;

package EPPC is
   --  
   --  File:       EPPC.h
   --  
   --  Contains:   High Level Event Manager Interfaces.
   --  
   --  Version:    Technology: System 7.5
   --              Package:    Universal Interfaces 2.0 in ÒMPW LatestÓ on ETO #17
   --  
   --  Copyright:  © 1984-1995 by Apple Computer, Inc.
   --              All rights reserved.

   --  
   -- value for eventRecord.what 

   kHighLevelEvent : Constant Events.EventKind := 23;
   -- postOptions currently supported 
   receiverIDMask        : Constant unsigned_long := 16#0000F000#;
   receiverIDisPSN       : Constant unsigned_long := 16#00008000#;
   receiverIDisSignature : Constant unsigned_long := 16#00007000#;
   receiverIDisSessionID : Constant unsigned_long := 16#00006000#;
   receiverIDisTargetID  : Constant unsigned_long := 16#00005000#;
   systemOptionsMask     : Constant unsigned_long := 16#00000F00#;
   nReturnReceipt        : Constant unsigned_long := 16#00000200#;
   priorityMask          : Constant unsigned_long := 16#000000FF#;

   nAttnMsg              : Constant unsigned_long := 16#00000001#;
   -- constant for return receipts 
   HighLevelEventMsgClass : constant Types.OSType := Types.ToRes("jaym");

   rtrnReceiptMsgID       : constant Types.OSType := Types.ToRes("rtrn");
   msgWasPartiallyAccepted : constant := 2;
   msgWasFullyAccepted     : constant := 1;

   msgWasNotAccepted       : constant := 0;

   uppGetSpecificFilterProcInfo : constant := 16#00000FD0#; -- FUNCTION (4 byte param, 4 byte param, 4 byte param): 1 byte result;
   type TargetID is 
      record
         sessionID  : Long_Integer;
         name     : PPCPortRec;
         location   : LocationNameRec;
         recvrName  : PPCPortRec;
      end record;
   type TargetIDPtr is Access TargetID;

   type TargetIDHdl is Access TargetIDPtr;
   subtype SenderID is TargetID;

   type SenderIDPtr is Access SenderID;
   type HighLevelEventMsg is 
      record
         HighLevelEventMsgHeaderLength  : unsigned_short;
         version            : unsigned_short;
         reserved1            : unsigned_long;
         theMsgEvent          : EventRecord;
         userRefcon           : unsigned_long;
         postingOptions         : unsigned_long;
         msgLength            : unsigned_long;
      end record;
   type HighLevelEventMsgPtr is Access HighLevelEventMsg;
   type HighLevelEventMsgHandle is Access HighLevelEventMsgPtr;

   type HighLevelEventMsgHdl is Access HighLevelEventMsgPtr;
   type GetSpecificFilterProcPtr is access function
     (yourDataPtr : in     Void_Ptr;
      msgBuff     : in     HighLevelEventMsgPtr; 

      sender      : access TargetID) return Boolean;
   subtype GetSpecificFilterUPP is UniversalProcPtr;
--FUNCTION NewGetSpecificFilterProc(userRoutine: GetSpecificFilterProcPtr): GetSpecificFilterUPP;

--FUNCTION CallGetSpecificFilterProc(contextPtr: UNIV Ptr; msgBuff: HighLevelEventMsgPtr; {CONST}VAR sender: TargetID; userRoutine: GetSpecificFilterUPP): BOOLEAN;
   function PostHighLevelEvent
     (theEvent           : access EventRecord;
      receiverID         : in     unsigned_long;
      msgRefcon          : in     unsigned_long;
      msgBuff            : in     Ptr;
      msgLen             : in     unsigned_long;
      postingOptions     : in     unsigned_long)
      return                      OSErr;
   pragma Import (C, PostHighLevelEvent, "PostHighLevelEvent", "PostHighLevelEvent");
                          
   function AcceptHighLevelEvent
     (sender             : access TargetID;
      msgRefcon          : access unsigned_long;
      msgBuff            : in     Ptr;
      msgLen             : access unsigned_long)
      return                      OSErr;
   pragma Import (C, AcceptHighLevelEvent, "AcceptHighLevelEvent", 
                          "AcceptHighLevelEvent");
                          
   function GetProcessSerialNumberFromPortName
     (portName           : access PPCPortRec;
      pPSN               : access ProcessSerialNumber)
      return                      OSErr;
   pragma Import (C, GetProcessSerialNumberFromPortName, 
    "GetProcessSerialNumberFromPortName", "GetProcessSerialNumberFromPortName");
    
   function GetPortNameFromProcessSerialNumber
     (portName           : access PPCPortRec;
      pPSN               : access ProcessSerialNumber)
      return                      OSErr;
   pragma Import (C, GetPortNameFromProcessSerialNumber, 
    "GetPortNameFromProcessSerialNumber", "GetPortNameFromProcessSerialNumber");
    
   function GetSpecificHighLevelEvent
     (aFilter            : in     GetSpecificFilterUPP;
      yourDataPtr        : in     Void_Ptr;
      err                : access OSErr)
      return                      Boolean;
   pragma Import (C, GetSpecificHighLevelEvent, "GetSpecificHighLevelEvent", 
                            "GetSpecificHighLevelEvent");
end EPPC;