1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323
|
QPOE -- Prototype POE (Position Ordered Event file) Interface.
See QPOE.hlp for detailed information.
-----------------------------------------------------------------
1. QPOE (General QPOE file access)
[ --- external routines --- ]
qp_parse (expr, poefile, sz_poefile, paramex, sz_paramex)
yes|no = qp_access (poefile, mode)
qp_copy (o_poefile, n_poefile)
qp_rename (o_poefile, n_poefile)
qp_rebuild (poefile)
qp_delete (poefile)
ptr = qp_open (poefile, mode, o_qp)
qp_set[ir] (qp, param, value)
val = qp_stat[ir] (qp, param)
qp_debug (qp, out, what)
qp_sync (qp)
qp_close (qp)
qp_add[bcsilrdx] (qp, param, value, comment)
qp_astr (qp, param, value, comment)
val = qp_get[bcsilrdx] (qp, param)
nchars = qp_gstr (qp, param, outstr, maxch)
qp_put[bcsilrdx] (qp, param, value)
qp_pstr (qp, param, strval)
n = qp_read (qp, param, buf, maxelem, first, datatype)
qp_write (qp, param, buf, nelem, first, datatype)
fd = qp_popen (qp, param, mode, type)
mw = qp_loadwcs (qp)
qp_savewcs (qp, mw)
yes|no = qp_accessf (qp, param)
qp_deletef (qp, param)
qp_renamef (qp, param, newname)
qp_copyf (o_qp, o_param, n_qp, n_param)
qp_addf (qp, param, datatype, maxelem, comment, flags)
nelem = qp_queryf (qp, param, datatype, maxelem, comment, flags)
nelem = qp_lenf (qp, param)
nchars = qp_expandtext (qp, s1, s2, maxch)
ptr = qp_ofnl[su] (qp, template)
ptr = qp_ofnl (qp, template, sort)
n|EOF = qp_gnfn (fl, outstr, maxch)
len = qp_lenfnl (fl)
qp_seekfnl (fl, pos)
qp_cfnl (fl)
[ --- internal routines --- ]
qp_bind (qp)
dtype = qp_dtype (qp, datatype, dsym)
nchars = qp_elementsize (qp, datatype)
nchars = qp_sizeof (qp, dtype, dsym)
qp_mkfname (poefile, extn, fname, maxch)
ival = qp_ctoi (str, ip, ival)
dval = qp_ctod (str, ip, dval)
ptr = qp_gmsym (qp, macro, textp)
ptr = qp_gpsym (qp, param)
nfields = qp_parsefl (qp, fieldlist, dd)
qp_inherit (n_qp, o_qp, out)
dtype = qp_getparam (qp, param, o_pp)
dtype = qp_putparam (qp, param, o_pp)
qp_flushpar (qp)
gt = qp_opentext (qp, text) # token i/o
token = qp_nexttok (gt)
token = qp_gettok (gt, tokbuf, maxch)
token = qp_rawtok (gt, outstr, maxch)
nargs = qp_arglist (gt, argbuf, maxch)
qp_closetext (gt)
ptr = qm_access () # macros
ch = qm_getc (fd, ch)
qm_scan (qm, fname, flags)
qm_scano (qm, fd, flags)
qm_[set|upd]defaults (qm, qp)
qm_setparam (qm, param, valstr)
ptr = qm_symtab (qm)
2. QPIO (Event I/O)
[ --- external routines --- ]
io = qpio_open (qp, paramex, mode)
qpio_close (io)
qpio_setrange (io, vs, ve, ndim)
ndim = qpio_getrange (io, vs, ve, maxdim)
qpio_setfilter (io, expr)
nchars = qpio_getfilter (io, outstr, maxch)
qpio_set[ir] (io, param, value)
val = qpio_stat[ir] (io, param)
mw = qpio_loadwcs (io)
qpio_mkindex (io, key)
qpio_putevents (io, i_ev, nevents)
n|EOF = qpio_getevents (io, o_ev, maskval, maxev, nev)
nev = qpio_readpix[si] (io, obuf, vs, ve, ndim, xblock, yblock)
[ --- internal routines --- ]
ok|err = qpio_parse (io, expr, filter, sz_filter, mask, sz_mask)
qpio_loadmask (io, mask, mergeflg)
bkno|EOF = qpio_rbucket (io, bkno)
qpio_wbucket (io, n_bkno)
qpio_sync (io)
3. QPEX (Event Attribute Filtering)
[ --- external routines --- ]
ex = qpex_open (qp, expr)
ok|err = qpex_modfilter (ex, exprlist)
nchars = qpex_getfilter (ex, outstr, maxch)
nc = qpex_getattribute (ex, attribute, outstr, maxch)
nr = qpex_attrl[ird] (ex, attribute, xs, xe, xlen)
nev = qpex_evaluate (ex, i_ev, o_ev, nev)
qpex_close (ex)
[ --- internal routines --- ]
v = qpex_parse[dir] (expr, xs, xe, xlen)
v = qpex_sublist[dir] (x1, x2, xs,xe,nranges,ip, o_xs,o_xe)
v = qpex_codegen[dir] (ex, atname, assignop, expr, offset, dtype)
qpex_delete (ex, offset, dtype)
ptr = qpex_pbpos (ex)
offset = qpex_refd (ex, value)
ptr = qpex_dballoc (ex, nelem, dtype)
ptr = qpex_dbpstr (ex, strval)
qpex_pbpin (ex, opcode, arg1, arg2, arg3)
qpex_mark (ex, pb_save, db_save)
qpex_free (ex, pb_save, db_save)
nr = qp_rlmerge[dir] (os,oe,olen, xs,xe,nx, ys,ye,ny)
4. INTERFACE SYNTAX
Default parameter and domain names:
"deffilt" # default event filter (all event lists)
"defmask" # default region mask (all event lists)
"deffilt.<evl>" # default event filter for event list <evl>
"defmask.<evl>" # default region mask for event list <evl>
"event" # default name of user event datatype
"events" # default event-list parameter
QPIO expression syntax:
[ evl-param ][ `[' [`!'] keyword [(`:='|`='|`+=') expr], ...`]' ]
where <evl-param> defaults to "events" if not given, and where <keyword> may
be any of the following, or a term of an event attribute expression.
block # blocking factor for image matrix
debug # debug level (integer, 0=nodebug)
filter # event attribute filter (expression)
key # event key (Y,X) fields (e.g.(s10,s8))
noindex # don't use index even if present
param # name of event list header parameter
mask # region mask
rect # subregion of image, e.g, rect=[*,100:400]
Any unrecognized keyword=expr terms are passed on to the event attribute
filter, hence the "filter=(expr)" syntax is optional.
QPEX expression syntax (the <expr> in "filter=<expr>" above):
'(' attribute=expr [, attribute=expr...] ')'
where <attribute> is the "physical" name (type code plus byte offset) of
a field of the event structure, and expr is
%N bitwise mask test
!%N negated bitwise mask test
or some combination of
N equality test
:N open range (less than or equal to N)
N: open range (greater than or equal to N)
M:N range (M to N inclusive)
expr,expr,... list of values or ranges
'(' expr ')' parenthesized expr
'!' expr
MACRO syntax:
macro replace <macro> by defined value
macro(arg,...) replace <macro> with argument substitution
@file replace <@file> by contents of file
`cmd` replace <`cmd`> by output of the CL command "cmd",
replacing all newlines by spaces
@file(arg,...) file pushback with argument substitution
`cmd`(arg,...) command output pushback with argument substitution
Macro define syntax:
define macro replacement-text
set parameter value
where <macro> is any identifier, and <replacement-text> is literal text to
be pushed back into the input and rescanned when <macro> is encountered in
the input stream. <replacement-text> may contain symbols of the form '$N'
denoting places where argument substitution is to be performed during pushback.
The special builtin macro $DFN will be replaced by the datafile name, returned
as a string token.
<parameter> denotes a QPOE interface parameter the value of which is to be
set, e.g., to set the size of a buffer to be created at run time. The
following interface parameters are defined:
"bucketlen" QPIO bucket length, nevents
"cachesize" number of file descriptors in lfile cache
"indexlen" number of hash entries in symbol table index
"maxlfiles" maximum number of lfiles in datafile
"pagesize" page size, bytes, of datafile
"sbufsize" initial symbol table size, su
"stablen" initial symbol table string buffer size, chars
"progbuflen" QPEX program buffer size (compiled instructions)
"databuflen" QPEX data buffer size (initialized data space)
"nodeffilt" disable the use of any default event filters
"nodefmask" disable the use of any default region masks
"maxpushback" max characters pushback (for macro expansion)
"maxfrlutlen" max full resolution lookup table length
"maxrrlutlen" max reduced resolution lookup table length
"lutminranges" min ranges required before a lookup table is used
"lutscale" scale factor to convert nranges to n LUT bins
"blockfactor" QPIO blocking factor for output pixel arrays
"optbufsize" FIO i/o buffer size for IMIO access to QPOE file, chars
"debuglevel" debug level, 0 for no runtime debug messages
Environment:
'qmfiles' an environment variable listing a set of macro
define files defining the global macros to be
used by QPOE
'qmsave' an environment variable defining the name of a
file to be used to store the compiled macros
(defaults to uparm$qpoe.msv).
5. INTERFACE PARAMETERS
# QPSET.H -- User accessible definitions for the QPOE package.
define SZ_COMMENT 79 # max size comment string
define SZ_DATATYPE 79 # max size datatype name string
# QPOE Read-Write Parameters.
define QPOE_BLOCKFACTOR 1 # blocking factor for pixel arrays
define QPOE_BUCKETLEN 2 # event list bucket length, nevents
define QPOE_CACHESIZE 3 # lfile (buffer) cache size, nlfiles
define QPOE_DATABUFLEN 4 # QPEX data buffer length, chars
define QPOE_DEBUGLEVEL 5 # debug level (0 = no messages)
define QPOE_DEFLUTLEN 6 # default lookup table length (bins)
define QPOE_INDEXLEN 7 # symbol table hash index length
define QPOE_LUTMINRANGES 8 # min ranges before using LUT
define QPOE_LUTSCALE 9 # scale nranges to LUT bins
define QPOE_MAXFRLUTLEN 10 # max full-res LUT length
define QPOE_MAXLFILES 11 # max lfiles in datafile
define QPOE_MAXPUSHBACK 12 # max amount of pushed back macro data
define QPOE_MAXRRLUTLEN 13 # max reduced-res LUT length
define QPOE_OPTBUFSIZE 14 # optimum buffer size for IMIO/QPF/FIO
define QPOE_PAGESIZE 15 # page size of datafile, bytes
define QPOE_PROGBUFLEN 16 # QPEX program buffer length, ints
define QPOE_SBUFSIZE 17 # symtab string buf size, chars (init)
define QPOE_STABLEN 18 # symtab data area size, su (init)
define QPOE_NODEFFILT 19 # disable use of default filter
define QPOE_NODEFMASK 20 # disable use of default mask
# QPOE Read-Only Parameters.
define QPOE_FM 21 # FMIO descriptor
define QPOE_MODE 22 # poefile access mode
define QPOE_ST 23 # SYMTAB symbol table descriptor
define QPOE_VERSION 24 # QPOE version number
# Parameter flags (for qp_addf).
define QPF_NONE (-1) # no flags (0 gives default flags)
define QPF_INHERIT 0002B # copy parameter in a NEW_COPY open
# QPIOSET.H -- QPIO User accessible interface parameters.
define qpio_stati qpiost # (name collision with qpio_seti)
# Read-Write Parameters.
define QPIO_BLOCKFACTOR 1 # blocking factor for image matrices
define QPIO_BUCKETLEN 2 # event list bucket size, nevents
define QPIO_DEBUG 3 # debug level, debug=0 for no messages
define QPIO_EVXOFF 4 # short offset of X field of event
define QPIO_EVYOFF 5 # short offset of Y field of event
define QPIO_EX 6 # QPEX descriptor (event attr. filter)
define QPIO_NODEFFILT 7 # disable use of default filter
define QPIO_NODEFMASK 8 # disable use of default mask
define QPIO_NOINDEX 9 # flag to disable use of index
define QPIO_OPTBUFSIZE 10 # optimum buffer size for IMIO/QPF/FIO
define QPIO_PL 11 # PLIO descriptor (pixel mask)
# Read-Only Parameters.
define QPIO_EVENTLEN 12 # length of event struct, shorts
define QPIO_FD 13 # file descriptor of event list lfile
define QPIO_INDEXLEN 14 # event list index length (0=noindex)
define QPIO_IXXOFF 15 # short offset of X field used in index
define QPIO_IXYOFF 16 # short offset of Y field used in index
define QPIO_LF 17 # lfile in which event list is stored
define QPIO_MASKP 18 # char pointer to mask-name buffer
define QPIO_MAXEVP 19 # pointer to MAX-event fields struct
define QPIO_MINEVP 20 # pointer to MIN-event fields struct
define QPIO_NCOLS 21 # number of columns in image
define QPIO_NLINES 22 # number of lines in image
define QPIO_PARAMP 23 # char pointer to param-name buffer
define QPIO_QP 24 # backpointer to QPOE descriptor
|