shithub: purgatorio

ref: e2e50a8e5a74452672f9418bcdfe4de10f600ed0
dir: /man/2/devpointer/

View raw version
.TH DEVPOINTER 2 mux
.SH NAME
devpointer \- I/O interface for the pointer device
.SH SYNOPSIS
.EX
include "draw.m";   # for Draw->Pointer
include "devpointer.m";
ptr := load Devpointer Devpointer->PATH;

init:      fn();
reader:    fn(file: string, posn: chan of ref Draw->Pointer,
              pid: chan of (int, string));
bytes2ptr: fn(buf: array of byte)    : ref Draw->Pointer;
ptr2bytes: fn(ptr: ref Draw->Pointer): array of byte;
.EE
.SH DESCRIPTION
.B Devpointer
reads messages from pointer devices with the same data format as
.BR /dev/pointer ,
converting them to
.B Pointer
adts.
.PP
.B Init
must be called before any other operation of the module.
.PP
.B Reader
should be spawned by the caller.
It opens the pointer device specified by
.IR file ,
and sends a value
.BI ( id,\ err )
on channel
.IR pid .
On success,
.I id
is the process ID of the spawned process and
.I err
is nil; on an error,
.I err
is a diagnostic, and
.I id
is undefined.
If the file was opened successfully,
.B reader
continually reads the pointer device and sends
.B Pointer
adts over the channel
.IR posn .
If
.I file
is
.BR nil ,
the default device is
.BR /dev/pointer .
.PP
.B Bytes2ptr
converts the array of bytes
.I buf
to a
.B Pointer
and returns a reference to it.
.I Buf
should consist of exactly
.B Devpointer->Size
bytes and be in the format returned by
.BR /dev/pointer .
.PP
.B Ptr2bytes
provides the inverse transformation of
.BR bytes2ptr :
it packs the data into an array of bytes of appropriate format,
which it returns.
.SH FILES
.B /dev/pointer
.SH "SEE ALSO"
.IR draw-intro (2),
.IR draw-pointer (2)