Allocating Space And Setting Field Values For the User-Defined Stream

The memory space for a user-defined stream structure and its buffer are controlled by the user application. It is recommended to use QP_malloc() to allocate the space for more efficient memory utilization in the Prolog system. In our example, the buffer is a field in the BinStream structure so that only one QP_malloc() call allocates both buffer and stream space.

After memory is allocated, the fields in the stream structure are set appropriately. The fields of QP_stream part in the stream structure is set up in the next step.

             if ((stream = (BinStream *) QP_malloc(sizeof(*stream)))
                             == ((BinStream *) 0) ) {
                 (void) close(fd);
                 *error_num = QP_errno;
                 return QP_NULL_STREAM;
             }
             stream->fd = fd;
             stream->last_rdsize = 0;