PostScript Device Data Structures
This page applies to Harlequin v13.1r0 and later; and to Harlequin MultiRIP but not Harlequin Core
This describes the data structures that the RIP and a PSDEV plugin use to share data.
Devices
Once instantiated by the PostScript language, the interpreter maintains a C structure for each device. This structure is passed to most of the functions which implement the device type, and is as follows:
typedef struct devicelist { int32 flags;
uint8 *name;
DEVICETYPE *devicetype; uint8 *private;
struct devicelist *next;
} DEVICELIST ;
These structures are maintained by the RIP, and should not be altered. The name
field points to the nullāterminated device name, excluding any leading and trailing %
characters. For example, when opening a file on the device %mydevice0%,
the name
field of the dev
parameter passed to the open call of the %mydevice0%
device type points to the C string "mydevice0"
. The encoding of the device name, like the name itself, will be determined by the plugin. It is the responsibility of the plugin to ensure that the encoding scheme selected is appropriate to the environment; the platform's native language encoding is recommended.
devicetype
points to the DEVICETYPE
structure for this device. private
points to the private area of memory allocated by the RIP when this device was created. See the description of the sizeof_private
field in the description of the DEVICETYPE
structure.