/* 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; }
/* 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; }
/* 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; }
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; }