Package Name: ppctoolbox

Return to: Package List


with Interfaces.C; use Interfaces.C;
with AppleTalk; use AppleTalk;
with Types; use Types;
with Memory; use Memory;

package PPCToolbox is
   --  
   --  File:       PPCToolbox.h
   --  
   --  Contains:   Program-Program Communications Toolbox 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.

   --  

   subtype PPCServiceType is unsigned_char;

   ppcServiceRealTime  : Constant Integer:= 1;

   subtype PPCLocationKind is Short_Integer;
   ppcNoLocation      : Constant Integer:= 0;  -- There is no PPCLocName 
   ppcNBPLocation     : Constant Integer:= 1;  -- Use AppleTalk NBP     
   ppcNBPTypeLocation : Constant Integer:= 2;  -- Used for specifying a location

                                              -- name type during PPCOpen only

   subtype PPCPortKinds is Short_Integer;
   ppcByCreatorAndType : Constant Integer:= 1; -- Port type is specified as colloquial Mac creator and type }

   ppcByString : Constant Integer:= 2; -- Port type is in pascal string format
   --  Values returned for request field in PPCInform call

   subtype PPCSessionOrigin is unsigned_char;
   -- Values returned for requestType field in PPCInform call }
   ppcLocalOrigin  : Integer:= 1;  --  session originated from this machine

   ppcRemoteOrigin : Integer:= 2;  -- session originated from remote machine

   subtype PPCPortRefNum is Short_Integer;

   subtype PPCSessRefNum is Long_Integer;
   type Union_1 is array (0 .. 35) of char;

   subtype Union_1_portTypeStr is Str32;          --  pascal type string
   type anon_struct_1 is 
      record
         portCreator : OSType;
         portType : OSType;
      end record;

   subtype Union_1_port is anon_struct_1;
   type PPCPortRec is 
      record
         nameScript : ScriptCode;                 --  script of name
         name : Str32;                            --  name of port as seen in browser
         portKindSelector : PPCPortKinds;         --  which variant
         u : Union_1;
      end record;

   type PPCPortPtr is Access PPCPortRec;
   type Union_2 is array (0 .. 101) of char;
   subtype Union_2_nbpEntity is EntityName;       --  NBP name entity

   subtype Union_2_nbpType is Str32;              --  just the NBP type string, for PPCOpen
   type LocationNameRec is 
      record
         locationKindSelector : PPCLocationKind;  --  which variant
         u : Union_2;
      end record;

   type LocationNamePtr is Access LocationNameRec;
   type PortInfoRec is 
      record
         filler1 : unsigned_char;
         authRequired : Boolean;
         name : PPCPortRec;
      end record;
   type PortInfoArrayPtr is Access PortInfoRec;

   type PortInfoPtr is Access PortInfoRec;
   type PPCParamBlockRec is array (0 .. 75) of char;
   type PPCParamBlockPtr is Access PPCParamBlockRec;
   subtype PPCCompUPP is UniversalProcPtr;
   type unsigned_long_Vec_5 is array (0 .. 4) of unsigned_long;
   type PPCOpenPBRec is 
      record
         qLink : Ptr;
         csCode : unsigned_short;
         intUse : unsigned_short;
         intUsePtr : Ptr;
         ioCompletion : PPCCompUPP;
         ioResult : OSErr;
         Reserved : unsigned_long_Vec_5;
         portRefNum : PPCPortRefNum;              --  38 <--   Port Reference
         filler1 : Long_Integer;
         serviceType : PPCServiceType;            --  44 -->    Bit field describing the requested port service
         resFlag : UInt8;                         --  Must be set to 0
         portName : PPCPortPtr;                   --  46 -->   PortName for PPC
         locationName : LocationNamePtr;          --  50 -->   If NBP Registration is required
         networkVisible : Boolean;                --  54 -->   make this network visible on network
         nbpRegistered : Boolean;                 --  55 <--   The given location name was registered on the network
      end record;
   type PPCOpenPBPtr is Access PPCOpenPBRec;

   subtype PPCParamBlockRec_openParam is PPCOpenPBRec;
   type PPCInformPBRec is 
      record
         qLink : Ptr;
         csCode : unsigned_short;
         intUse : unsigned_short;
         intUsePtr : Ptr;
         ioCompletion : PPCCompUPP;
         ioResult : OSErr;
         Reserved : unsigned_long_Vec_5;
         portRefNum : PPCPortRefNum;              --  38 -->   Port Identifier
         sessRefNum : PPCSessRefNum;              --  40 <--   Session Reference
         serviceType : PPCServiceType;            --  44 <--   Status Flags for type of session, local, remote
         autoAccept : Boolean;                    --  45 -->   if true session will be accepted automatically
         portName : PPCPortPtr;                   --  46 -->   Buffer for Source PPCPortRec
         locationName : LocationNamePtr;          --  50 -->   Buffer for Source LocationNameRec
         userName : StringPtr;                    --  54 -->   Buffer for Soure user's name trying to link.
         userData : unsigned_long;                --  58 <--   value included in PPCStart's userData
         requestType : PPCSessionOrigin;          --  62 <--   Local or Network
         filler : SInt8;
      end record;
   type PPCInformPBPtr is Access PPCInformPBRec;

   subtype PPCParamBlockRec_informParam is PPCInformPBRec;
   type PPCStartPBRec is 
      record
         qLink : Ptr;
         csCode : unsigned_short;
         intUse : unsigned_short;
         intUsePtr : Ptr;
         ioCompletion : PPCCompUPP;
         ioResult : OSErr;
         Reserved : unsigned_long_Vec_5;
         portRefNum : PPCPortRefNum;              --  38 -->   Port Identifier
         sessRefNum : PPCSessRefNum;              --  40 <--   Session Reference
         serviceType : PPCServiceType;            --  44 <--   Actual service method (realTime)
         resFlag : UInt8;                         --  45 -->   Must be set to 0
         portName : PPCPortPtr;                   --  46 -->   Destination portName
         locationName : LocationNamePtr;          --  50 -->   NBP or NAS style service location name
         rejectInfo : unsigned_long;              --  54 <--   reason for rejecting the session request
         userData : unsigned_long;                --  58 -->   Copied to destination PPCInform parameter block
         userRefNum : unsigned_long;              --  62 -->   userRefNum (obtained during login process)
      end record;
   type PPCStartPBPtr is Access PPCStartPBRec;

   subtype PPCParamBlockRec_startParam is PPCStartPBRec;
   type PPCAcceptPBRec is 
      record
         qLink : Ptr;
         csCode : unsigned_short;
         intUse : unsigned_short;
         intUsePtr : Ptr;
         ioCompletion : PPCCompUPP;
         ioResult : OSErr;
         Reserved : unsigned_long_Vec_5;
         filler1 : Short_Integer;
         sessRefNum : PPCSessRefNum;              --  40 -->   Session Reference
      end record;
   type PPCAcceptPBPtr is Access PPCAcceptPBRec;

   subtype PPCParamBlockRec_acceptParam is PPCAcceptPBRec;
   type PPCRejectPBRec is 
      record
         qLink : Ptr;
         csCode : unsigned_short;
         intUse : unsigned_short;
         intUsePtr : Ptr;
         ioCompletion : PPCCompUPP;
         ioResult : OSErr;
         Reserved : unsigned_long_Vec_5;
         filler1 : Short_Integer;
         sessRefNum : PPCSessRefNum;              --  40 -->   Session Reference
         filler2 : Short_Integer;
         filler3 : Long_Integer;
         filler4 : Long_Integer;
         rejectInfo : unsigned_long;              --  54 -->   reason for rejecting the session request
      end record;
   type PPCRejectPBPtr is Access PPCRejectPBRec;

   subtype PPCParamBlockRec_rejectParam is PPCRejectPBRec;
   type PPCWritePBRec is 
      record
         qLink : Ptr;
         csCode : unsigned_short;
         intUse : unsigned_short;
         intUsePtr : Ptr;
         ioCompletion : PPCCompUPP;
         ioResult : OSErr;
         Reserved : unsigned_long_Vec_5;
         filler1 : Short_Integer;
         sessRefNum : PPCSessRefNum;              --  40 -->   Session Reference
         bufferLength : Size;                     --  44 -->   Length of the message buffer
         actualLength : Size;                     --  48 <--   Actual Length Written
         bufferPtr : Ptr;                         --  52 -->   Pointer to message buffer
         more : Boolean;                          --  56 -->   if more data in this block will be written
         filler2 : unsigned_char;
         userData : unsigned_long;                --  58 -->   Message block userData Uninterpreted by PPC
         blockCreator : OSType;                   --  62 -->   Message block creator Uninterpreted by PPC
         blockType : OSType;                      --  66 -->   Message block type Uninterpreted by PPC
      end record;
   type PPCWritePBPtr is Access PPCWritePBRec;

   subtype PPCParamBlockRec_writeParam is PPCWritePBRec;
   type PPCReadPBRec is 
      record
         qLink : Ptr;
         csCode : unsigned_short;
         intUse : unsigned_short;
         intUsePtr : Ptr;
         ioCompletion : PPCCompUPP;
         ioResult : OSErr;
         Reserved : unsigned_long_Vec_5;
         filler1 : Short_Integer;
         sessRefNum : PPCSessRefNum;              --  40 -->   Session Reference
         bufferLength : Size;                     --  44 -->   Length of the message buffer
         actualLength : Size;                     --  48 <--   Actual length read
         bufferPtr : Ptr;                         --  52 -->   Pointer to message buffer
         more : Boolean;                          --  56 <--   if true more data in this block to be read
         filler2 : unsigned_char;
         userData : unsigned_long;                --  58 <--   Message block userData Uninterpreted by PPC
         blockCreator : OSType;                   --  62 <--   Message block creator Uninterpreted by PPC
         blockType : OSType;                      --  66 <--   Message block type Uninterpreted by PPC
      end record;
   type PPCReadPBPtr is Access PPCReadPBRec;

   subtype PPCParamBlockRec_readParam is PPCReadPBRec;
   type PPCEndPBRec is 
      record
         qLink : Ptr;
         csCode : unsigned_short;
         intUse : unsigned_short;
         intUsePtr : Ptr;
         ioCompletion : PPCCompUPP;
         ioResult : OSErr;
         Reserved : unsigned_long_Vec_5;
         filler1 : Short_Integer;
         sessRefNum : PPCSessRefNum;              --  40 -->   Session Reference
      end record;
   type PPCEndPBPtr is Access PPCEndPBRec;

   subtype PPCParamBlockRec_endParam is PPCEndPBRec;
   type PPCClosePBRec is 
      record
         qLink : Ptr;
         csCode : unsigned_short;
         intUse : unsigned_short;
         intUsePtr : Ptr;
         ioCompletion : PPCCompUPP;
         ioResult : OSErr;
         Reserved : unsigned_long_Vec_5;
         portRefNum : PPCPortRefNum;              --  38 -->   Port Identifier
      end record;
   type PPCClosePBPtr is Access PPCClosePBRec;

   subtype PPCParamBlockRec_closeParam is PPCClosePBRec;
   type IPCListPortsPBRec is 
      record
         qLink : Ptr;
         csCode : unsigned_short;
         intUse : unsigned_short;
         intUsePtr : Ptr;
         ioCompletion : PPCCompUPP;
         ioResult : OSErr;
         Reserved : unsigned_long_Vec_5;
         filler1 : Short_Integer;
         startIndex : unsigned_short;             --  40 -->   Start Index
         requestCount : unsigned_short;           --  42 -->   Number of entries to be returned
         actualCount : unsigned_short;            --  44 <--   Actual Number of entries to be returned
         portName : PPCPortPtr;                   --  46 -->   PortName Match
         locationName : LocationNamePtr;          --  50 -->   NBP or NAS type name to locate the Port Location
         bufferPtr : PortInfoArrayPtr;            --  54 -->   Pointer to a buffer requestCount*sizeof(PortInfo) bytes big
      end record;
   type IPCListPortsPBPtr is Access IPCListPortsPBRec;

   subtype PPCParamBlockRec_listPortsParam is IPCListPortsPBRec;
   type PPCCompProcPtr is Access procedure

     (pb : in     PPCParamBlockPtr);
   function PPCInit
      return                      OSErr;

   pragma Import (C, PPCInit, "PPCInit", "PPCInit");
   function PPCOpenSync
     (pb                 : in     PPCOpenPBPtr)
      return                      OSErr;

   pragma Import (C, PPCOpenSync, "PPCOpenSync", "PPCOpenSync");
   function PPCOpenAsync
     (pb                 : in     PPCOpenPBPtr)
      return                      OSErr;

   pragma Import (C, PPCOpenAsync, "PPCOpenAsync", "PPCOpenAsync");
   function PPCInformSync
     (pb                 : in     PPCInformPBPtr)
      return                      OSErr;

   pragma Import (C, PPCInformSync, "PPCInformSync", "PPCInformSync");
   function PPCInformAsync
     (pb                 : in     PPCInformPBPtr)
      return                      OSErr;

   pragma Import (C, PPCInformAsync, "PPCInformAsync", "PPCInformAsync");
   function PPCStartSync
     (pb                 : in     PPCStartPBPtr)
      return                      OSErr;

   pragma Import (C, PPCStartSync, "PPCStartSync", "PPCStartSync");
   function PPCStartAsync
     (pb                 : in     PPCStartPBPtr)
      return                      OSErr;

   pragma Import (C, PPCStartAsync, "PPCStartAsync", "PPCStartAsync");
   function PPCAcceptSync
     (pb                 : in     PPCAcceptPBPtr)
      return                      OSErr;

   pragma Import (C, PPCAcceptSync, "PPCAcceptSync", "PPCAcceptSync");
   function PPCAcceptAsync
     (pb                 : in     PPCAcceptPBPtr)
      return                      OSErr;

   pragma Import (C, PPCAcceptAsync, "PPCAcceptAsync", "PPCAcceptAsync");
   function PPCRejectSync
     (pb                 : in     PPCRejectPBPtr)
      return                      OSErr;

   pragma Import (C, PPCRejectSync, "PPCRejectSync", "PPCRejectSync");
   function PPCRejectAsync
     (pb                 : in     PPCRejectPBPtr)
      return                      OSErr;

   pragma Import (C, PPCRejectAsync, "PPCRejectAsync", "PPCRejectAsync");
   function PPCWriteSync
     (pb                 : in     PPCWritePBPtr)
      return                      OSErr;

   pragma Import (C, PPCWriteSync, "PPCWriteSync", "PPCWriteSync");
   function PPCWriteAsync
     (pb                 : in     PPCWritePBPtr)
      return                      OSErr;

   pragma Import (C, PPCWriteAsync, "PPCWriteAsync", "PPCWriteAsync");
   function PPCReadSync
     (pb                 : in     PPCReadPBPtr)
      return                      OSErr;

   pragma Import (C, PPCReadSync, "PPCReadSync", "PPCReadSync");
   function PPCReadAsync
     (pb                 : in     PPCReadPBPtr)
      return                      OSErr;

   pragma Import (C, PPCReadAsync, "PPCReadAsync", "PPCReadAsync");
   function PPCEndSync
     (pb                 : in     PPCEndPBPtr)
      return                      OSErr;

   pragma Import (C, PPCEndSync, "PPCEndSync", "PPCEndSync");
   function PPCEndAsync
     (pb                 : in     PPCEndPBPtr)
      return                      OSErr;

   pragma Import (C, PPCEndAsync, "PPCEndAsync", "PPCEndAsync");
   function PPCCloseSync
     (pb                 : in     PPCClosePBPtr)
      return                      OSErr;

   pragma Import (C, PPCCloseSync, "PPCCloseSync", "PPCCloseSync");
   function PPCCloseAsync
     (pb                 : in     PPCClosePBPtr)
      return                      OSErr;

   pragma Import (C, PPCCloseAsync, "PPCCloseAsync", "PPCCloseAsync");
   function IPCListPortsSync
     (pb                 : in     IPCListPortsPBPtr)
      return                      OSErr;

   pragma Import (C, IPCListPortsSync, "IPCListPortsSync", "IPCListPortsSync");
   function IPCListPortsAsync
     (pb                 : in     IPCListPortsPBPtr)
      return                      OSErr;
   pragma Import (C, IPCListPortsAsync, "IPCListPortsAsync", 
                          "IPCListPortsAsync");
   function DeleteUserIdentity
     (userRef            : in     unsigned_long)
      return                      OSErr;
   pragma Import (C, DeleteUserIdentity, "DeleteUserIdentity", 
                          "DeleteUserIdentity");
   function GetDefaultUser
     (userRef            : access unsigned_long;
      userName           : in     Str32)
      return                      OSErr;

   pragma Import (C, GetDefaultUser, "GetDefaultUser", "GetDefaultUser");
   function StartSecureSession
     (pb                 : in     PPCStartPBPtr;
      userName           : in     Str32;
      useDefault         : in     Boolean;
      allowGuest         : in     Boolean;
      guestSelected      : access Boolean;
      prompt             : access Str255)
      return                      OSErr;
   pragma Import (C, StartSecureSession, "StartSecureSession", 

                          "StartSecureSession");
   type PPCFilterProcPtr is access function
     (name : in     LocationNamePtr;

      port : in     PortInfoPtr) return Boolean;

   subtype PPCFilterUPP is UniversalProcPtr;
   function PPCBrowser
     (prompt             : access Str255;
      applListLabel      : access Str255;
      defaultSpecified   : in     Boolean;
      theLocation        : access LocationNameRec;
      thePortInfo        : access PortInfoRec;
      portFilter         : in     PPCFilterUPP;
      theLocNBPType      : access Str32)
      return                      OSErr;

   pragma Import (C, PPCBrowser, "PPCBrowser", "PPCBrowser");
end PPCToolbox;