示例#1
0
/* an error before the session is established. */
static int
px_top_init(px_parser_state_t *st, px_state_t *pxs, bool big_endian)
{
    px_args_t args;
    px_value_t v[3];

    px_process_init(st, big_endian);

    /* Measure */
    v[0].type = pxd_scalar | pxd_ubyte;
    v[0].value.i = eInch;
    args.pv[0] = &v[0];
    /* UnitsPerMeasure */
    v[1].type = pxd_xy | pxd_uint16;
    v[1].value.ia[0] = v[1].value.ia[1] = 100; /* arbitrary */
    args.pv[1] = &v[1];
    /* ErrorReporting */
    v[2].type = pxd_scalar | pxd_ubyte;
    v[2].value.i = eErrorPage;
    args.pv[2] = &v[2];
    {
	int code = pxBeginSession(&args, pxs);
	if ( code < 0 )
	    return code;
    }
    return 0;
}
示例#2
0
/* Allocate a parser state. */
px_parser_state_t *
px_process_alloc(gs_memory_t * memory)
{
    px_parser_state_t *st = (px_parser_state_t *) gs_alloc_bytes(memory,
                                                                 sizeof
                                                                 (px_parser_state_t),
                                                                 "px_process_alloc");

    if (st == 0)
        return 0;
    st->memory = memory;
    px_process_init(st, true);
    return st;
}
示例#3
0
/* Prepare interp instance for the next "job" */
static int	/* ret 0 ok, else -ve error code */
pxl_impl_init_job(
	pl_interp_instance_t   *instance         /* interp instance to start job in */
)
{
	int code = 0;
	pxl_interp_instance_t *pxli = (pxl_interp_instance_t *)instance;
	px_reset_errors(pxli->pxs);
	px_process_init(pxli->st, true);

	/* set input status to: expecting stream header */
	px_stream_header_init(&pxli->headerState, pxli->st, pxli->pxs);
	pxli->processState = PSHeader;

	return code;
}
示例#4
0
int
pxSetDefaultGS(px_args_t *par, px_state_t *pxs)
{
    px_parser_state_t *pst = par->parser;
    px_parser_state_t st;
    stream_cursor_read r;
    int code;

    st.memory = pxs->memory;
    px_process_init(&st, false /* big_endian */);

    st.macro_state = pst->macro_state | ptsExecStream;
    r.ptr = pxSetDefaultGSstr - 1;
    r.limit = r.ptr + sizeof(pxSetDefaultGSstr);

    /* we don't expect this to fail */
    code = px_process(&st, pxs, &r);

    pst->macro_state = st.macro_state & ~ptsExecStream;
    return code;
}