supermario/base/SuperMarioProj.1994-02-09/OS/PPC/PPCBrowserPriv.h
2019-06-29 23:17:50 +08:00

270 lines
11 KiB
C

/*
File: PPCBrowserPriv.h
Contains: Private header file for the PPC Browser
Written by: Jeff Miller
Copyright: © 1990, 1992 by Apple Computer, Inc., all rights reserved.
This file is used in these builds:
Change History (most recent first):
<18> 7/5/92 csd #1034096 <gbm>: Changed listFont and listFontSize to use the
application font and size by setting them to 1 and 0
respectively. This will make the Browser show the lists in the
application font which works better for other script systems.
<17> 3/30/92 DCL Include StandardFile.h. It used to be indirectly included
through Packages.h.
<16> 9/21/90 JSM Use angle brackets again since we're using the real
PPCToolbox.h, update some stuff to reflect this.
<15> 9/15/90 ngk Fix include of PPCToolbox to use quotes instead of angle
brackets
<14> 9/14/90 JSM Add theLocNBPType to globals.
<13> 8/21/90 JSM Add DefaultPromptStr constant.
<12> 7/25/90 JSM Add ZoneListColumns, MachListColumns, and AppListColumns
constants, define NoCellSelected explicitly as a short to reduce
code size.
<11> 7/11/90 JSM #include String.h to avoid C compiler warnings.
<10> 5/29/90 JSM Update to add support for new Chooser-style interface.
<9> 5/3/90 JSM #include IntlUtilsPriv, add support for type select utilities to
globals.
<8> 4/24/90 JSM Add okEnabled field to globals, #define buttonEnabledHilite and
buttonDisabledHilite.
<7> 3/19/90 JSM Add support for machine not registered on network, call filter
with PortInfo instead of PortName.
<6> 3/15/90 JSM Add support for browser configuration resource.
<5> 3/14/90 JSM Update MachListData structure to specify local machine.
<4> 3/12/90 JSM Add support for zones coming and going.
<3> 3/8/90 JSM Update to do asynchronous NBP lookups and IPCListPorts.
<2> 2/20/90 JSM Add some lowmem #defines, add hasAT to browser globals.
<1> 2/19/90 JSM First checked in.
*/
#include <Types.h>
#include <stdio.h>
#include <Resources.h>
#include <ToolUtils.h>
#include <Memory.h>
#include <Errors.h>
#include <Packages.h>
#include <StandardFile.h> /*<17>*/
#include <Lists.h>
#include <IntlUtilsPriv.h>
#include <String.h> /* for memcmp definition */
#include <PPCToolbox.h>
/* resource types */
#define BrowseConfigType 'ppcc' /* browser configuration resource */
/* resource IDs to use */
#define BrowseConfigID -5856 /* browser configuration */
#define BrowseDLOGID -5856 /* browser dialog */
#define BrowseSTR -5856 /* browser STR# */
#define PPCToolboxSTR -16409 /* STR# with entity type of PPCToolbox */
#define PPCMachNameSTR -16413 /* STR with machine name */
/* items in browse dialog */
#define OKOutlineItem 3 /* outline of OK button */
#define PromptText 4 /* prompt at top of dialog */
#define ZoneText 5 /* title for zone list */
#define MachText 6 /* title for machine list */
#define ApplText 7 /* title for application list */
/* note - keep lists sequential! */
#define ZoneListItem 8 /* zone list */
#define MachListItem 9 /* machine list */
#define ApplListItem 10 /* application list */
/* note - keep list outlines sequential! */
#define ZoneListOutlineItem 11 /* outline for zone list */
#define MachListOutlineItem 12 /* outline for machine list */
#define ApplListOutlineItem 13 /* outline for application list */
/* indexes into BrowseSTR */
#define ZoneTitle 1 /* title for zone list */
#define MachTitle 2 /* title for machine list */
#define ApplTitle 3 /* default title for application list */
#define DefaultPromptStr 4 /* default prompt */
#define NoMachineStr 5 /* default name of local machine when there is no machine name */
/* indexes into PPCToolboxSTR */
#define PPCNBPType 1 /* NBP type string - "PPCToolbox" */
/* indexes into theList - keep zero based */
#define ZoneListIndex 0
#define MachListIndex 1
#define ApplListIndex 2
/* number of columns in each list */
#define ZoneListColumns 1
#define MachListColumns 2 /* second column not displayed, used to store data for each entry */
#define ApplListColumns 2 /* second column not displayed, used to store data for each entry */
#define typeDelay 60 /* long delay between keys for matching */
/* value for zoneCell, machCell, and applCell when no cell selected */
#define NoCellSelected ((short)-1)
/* font information for list cell font */
#define listFont 1 /* geneva */
#define listFontSize 0
#define listFrameSize 2 /* thickness of pen for framing of active list */
#define buttonEnabledHilite 0 /* contrlHilite of enabled button */
#define buttonDisabledHilite 255 /* contrlHilite of disabled button */
/* constants corresponding to keys of interest */
#define charUpArrow 0x1E /* up arrow key */
#define charDownArrow 0x1F /* down arrow key */
#define charReturn 0x0D /* return key */
#define charEnter 0x03 /* enter key */
#define charDelete 0x08 /* delete/backspace key */
#define charClear 0x1B /* clear key on keypad */
#define charEscape 0x1B /* escape key is same as clear key, so… */
#define kcEscape 0x35 /* we need the key code to be unambiguous */
#define charTab 0x09 /* tab key */
#define charPeriod 0x2E /* period character for Cancel */
/* some global variables we look at */
#define KeyThresh *((short*)0x18E) /* key threshold */
#define SPConfig *((unsigned char*)0x1FB) /* serial port config */
/* stuff for NBP */
/* defines stolen from ATalkEqu.a so we can look directly at the NBP response buffer */
#define tupleNet 0 /* Offset to network no. [word] */
#define tupleNode 2 /* Offset to node ID [byte] */
#define tupleName 5 /* Offset to name part of tuple [byte] */
/* maximum size of a single response from a lookup (in bytes) */
#define NBPMaxResponseSize 72 /* name + type + "\p*" + addrBlock */
/* minimum number of bytes left before growing response buffer */
#define NBPOverflowTolerance NBPMaxResponseSize
/* initial guess at how big the response buffer should be (in bytes) */
#define NBPGuess 512
/* how much to increment the response buffer size if we overflow (in bytes) */
#define NBPIncrement 512
/* stuff for IPCListPorts */
/* initial guess at how many PPC ports we'll get for one location */
#define PPCGuess 5
/* how many ports to increment the buffer by if we overflow */
#define PPCIncrement 2
/* macro to get global variables */
#define GetBrowseGlobals(theDialog) (browseGlobals*)GetWRefCon(theDialog)
/*
Structure for the PPC Browser configuration resource.
This is in 'ppcc' resource id -5856. Default values
are in parentheses.
*/
typedef struct
{
unsigned char NBPInterval; /* NBP lookup interval (1) */
unsigned char NBPCount; /* NBP lookup count (5) */
short NBPMaxLives; /* NBP maximum lives an entry has before deletion (9) */
short NBPMaxToGet; /* NBP maximum number of entities (256) */
short NBPMaxIdle; /* NBP idle time in ticks between lookups (120) */
short PPCMaxToGet; /* PPC maximum number of ports (128) */
short PPCMaxIdle; /* PPC idle time in ticks between list ports (120) */
} BrowseConfigRes;
/*
Structure for list cell data for second column of machine list.
We never actually display this, but use it to store further
data related to the machine in column 0.
*/
typedef struct
{
short age; /* for aging entries */
Boolean isHomeMachine; /* true if this is the local machine */
} MachListData;
/*
Structure for list cell data for second column of application list.
We never actually display this, but use it to store further
data related to the application in column 0.
*/
typedef struct
{
Boolean exists; /* set to true if it exists */
PortInfoRec thePortInfo; /* from IPCListPorts */
} ApplListData;
/* global variables hung off of dialog's refCon */
typedef struct
{
DialogPtr theDialog; /* pointer to dialog */
ListHandle theList[3]; /* zone, machine, and application lists */
short machListBottDelta; /* bottom coordinate of mach list */
short currList; /* index into theList of current list */
short zoneCell; /* currently selected row in zone list */
short machCell; /* currently selected row in mach list */
short applCell; /* currently selected row in appl list */
/* stuff for doing NBP lookups */
MPPParamBlock *NBPpb; /* parameter block for NBP */
long NBPBackoff; /* backoff timer */
short NBPOffset; /* current offset into the response buffer */
short NBPNumFound; /* number of names found last time we looked */
EntityName NBPEntity; /* the name we're looking up */
Str32 homeZone; /* name of the zone we're in */
/* NBP configuration info from resource */
unsigned char NBPInterval; /* NBP lookup interval */
unsigned char NBPCount; /* NBP lookup count */
short NBPMaxLives; /* NBP maximum lives an entry has before deletion */
short NBPMaxToGet; /* NBP maximum number of entities */
short NBPMaxIdle; /* NBP idle time in ticks between lookups */
/* stuff for listing PPC ports */
IPCListPortsPBRec *PPCpb; /* parameter block for IPCListPorts */
long PPCBackoff; /* backoff timer */
LocationNameRec PPCLoc; /* location of ports we're looking up */
PPCPortRec PPCPort; /* the port we're looking up */
/* PPC configuration info from resource */
short PPCMaxToGet; /* PPC maximum number of ports */
short PPCMaxIdle; /* PPC idle time in ticks between list ports */
/* stuff for list keyboard navigation */
TypeSelectRecord theTSR; /* record for type selecting */
/* labels in browse dialog */
char promptStr[256]; /* prompt */
char applListTitle[256]; /* title for application list */
/* parameters passed in by caller */
PPCFilterProcPtr portFilter; /* filter for port list */
LocationNameRec *theLoc; /* default location */
PortInfoRec *thePortInfo; /* default port info */
Str32 theLocNBPType; /* NBP type to use for location lookups */
/* group Booleans here for alignment */
Boolean NBPBackingOff; /* true if backing off NBP lookup */
Boolean PPCBackingOff; /* true if backing off listing ports */
Boolean machineRegistered; /* true if our machine is registered on the network */
Boolean firstHomeLookup; /* true if doing first lookup in our home zone */
Boolean defaultSpecified; /* true if trying to select a specified default */
Boolean selectingDefault; /* true if trying to do any default selection */
Boolean hasZones; /* true if zones present */
Boolean hasAT; /* true if AppleTalk enabled */
Boolean okEnabled; /* true if OK button enabled */
Boolean zoneListShown; /* true if zone list shown */
} browseGlobals;