`Gestalt` under ROMlib
<<< Previous |  |

# 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

Name | Value | Response
--- | --- | ---
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.

<<< Previous | Home |
`Gestalt` under ROMlib |  |