ARDI selectors

ARDI has added one special gestalt selector, gestaltPHYSICAL ('MUL8'). It returns the address of a routine that behaves just like Gestalt, but provides access to a completely different set of tables. These tables contain information about the environment in which Executor is running instead the emulated environment that Executor provides.

Example:


int PhysicalGestalt (long selector, long *responsep)
{
  int retval;
  pascal int (*physfp) (long sel, long *responsep);

  retval = Gestalt ('MUL8', (void *) &physfp);
  if (retval == noErr)
    retval = physfp (selector, responsep);
  return retval;
}

...

  OSErr err;
  long vers;

  err = PhysicalGestalt ('sysv', &vers);
  /* err should be noErr and vers should be the version of Executor you're
     running, not the version of the System file we're emulating */

These are the PhysicalGestalt selectors supported:

Table 1. PhysicalGestalt Selectors

NameValueResponse
gestaltSystemVersion'sysv'numeric version of Executor
gestaltExecutorVersionString'xqtr'address of the string version of Executor
gestaltDemoStatus'demo'1, if this is a demo version
gestaltDemoExpiration'xpir'how many days until the demo expires
gestaltSerialNumber's/n 'non-demo version: serial number
gestaltRegisteredName'name'non-demo version: name
gestaltRegisteredOrg'org 'non-demo version: organization
gestaltPhysicalRAMSize'ram 'amount of physical ram on the machine
gestaltScreenSize'scrn'resolution of the monitor
gestaltGhostScriptVersion'gost'win32 only: Ghostscript DLL version

ARDI is willing to add PhysicalGestalt selectors as Mac developers require.