(v13) Device type interface
This page applies to Harlequin v13.1r0 and later; and to Harlequin Core but not Harlequin MultiRIP
A device type is specified by a DEVICETYPE,
a structure defined in the supplied header file swdevice.h
. This is a C structure that contains the device type number, flags, and so on, and pointers to the functions that implement that device type.
The structure definition is in the SDK header file swdevice.h
.
Device routines must take certain actions to ensure that they do not halt processing (asynchronous actions) that may be necessary elsewhere in the system. This is described in (v13) Asynchronous actions .
Particular care should be taken to ensure that the calls in the device type that implement the filenameforall
and status
PostScript language operators start_file_list
, next_file
, end_file_list
, and status_file
return sensible results. If it intentionally should not find any files, it must not produce a fault in doing so, since this might cause the PostScript language job to abort.
Although the device interface is backwards compatible and requires no code changes to existing device code, it is recommended that device code be re-factored to use a new type definition for device file descriptors. The type for device file descriptors is DEVICE_FILEDESCRIPTOR.
In addition to this, the file swdevice.h contains useful macros to convert a void*
to a DEVICE_FILEDESCRIPTOR
and back again. These are called: VOIDPTR_TO_DEVICE_FILEDESCRIPTOR()
and DEVICE_FILEDESCRIPTOR_TO_VOIDPTR()
For further details on this see: \lib\interface\swdevice.h