-- $Header
: /f
/osi
/vt
/RCS
/rcv_text
.py
,v
7.1 91/02/22 09:48:06 mrose Interim $
-- Revision
7.1 91/02/22 09:48:06 mrose
-- Revision
7.0 89/11/23 22:31:37 mrose
-- Acquisition
, use
, and distribution of this module
and related
-- materials are subject to the restrictions of a license agreement
.
-- Consult the Preface
in the User
's Manual for the full terms of
extern TEXT_UPDATE *ndq_queue;
ud.echo_sw = ud.type_sw = -1;
ud.updates.do_list.do_name = "\0";
ud.updates.do_list.do_type = -1;
ud.updates.do_list.do_cmd.text_ud.text_count = 0;
if(unbuild_NDQPDU_NDQpdu(pe,1,NULLIP,NULLVP,&ud) == NOTOK)
(void)printf("Echo = %d; Type = %d; D.O. Name = %s; D. O. Update Type = %d\n", ud.echo_sw,ud.type_sw,ud.updates.do_list.do_name, ud.updates.do_list.do_type);
if(ud.updates.do_list.do_cmd.text_ud.text_count)
(void)printf("Text = %s\n",ud.updates.do_list.do_cmd.text_ud.text_ptr);
#define bitstr2int(arg,val,cnt) \
cp = bitstr2strb (arg, &cnt); \
val = strb2int (cp, cnt); \
SECTIONS none unbuild none
ndqpdu [6] IMPLICIT NDQcontent [[p (PEPYPARM)0]]
NDQcontent ::= SEQUENCE OF VTsdi [[p (PEPYPARM)0]]
echoNow [0] IMPLICIT SEQUENCE OF ObjectUpdate [[p (PEPYPARM)0]]
notEchoNow [1] IMPLICIT SEQUENCE OF ObjectUpdate [[p (PEPYPARM)0]]
display [0] IMPLICIT SEQUENCE
SEQUENCE OF DOupdate [[p (PEPYPARM)0]]
control [1] IMPLICIT COupdate [[p (PEPYPARM)0]]
TEXT_UPDATE *arg = (TEXT_UPDATE *)parm;
if( !(arg = (TEXT_UPDATE *)malloc(sizeof(TEXT_UPDATE)) ))
adios (NULLCP, "out of memory");
arg->type_sw = DISPLAY_OBJ;
arg->updates.do_list.do_name = do_name;
nextXarray [0] IMPLICIT NULL
%{arg->updates.do_list.do_type = 0;
(void) enq(&ndq_queue,arg);%},
nextYarray [1] IMPLICIT NULL
%{arg->updates.do_list.do_type = 1;
(void) enq(&ndq_queue,arg);%},
ptr-relative [2] IMPLICIT ExplicitPointer
[[p (PEPYPARM)&(arg->updates.do_list.do_cmd.ptr_rel)]]
%{arg->updates.do_list.do_type = 2;
(void) enq(&ndq_queue,arg);%},
ptr-absolute [3] IMPLICIT Pointer
[[p (PEPYPARM)&(arg->updates.do_list.do_cmd.ptr_abs)]]
%{arg->updates.do_list.do_type = 3;
(void) enq(&ndq_queue,arg);%},
text [4] IMPLICIT OCTETSTRING
[[o arg->updates.do_list.do_cmd.text_ud.text_ptr $ arg->updates.do_list.do_cmd.text_ud.text_count]]
%{arg->updates.do_list.do_type = 4;
(void) enq(&ndq_queue,arg);%},
repeatText [5] IMPLICIT SEQUENCE {
[[o arg->updates.do_list.do_cmd.rpt_seq.text $ arg->updates.do_list.do_cmd.rpt_seq.text_count]]
%{arg->updates.do_list.do_type = 5;
(void) enq(&ndq_queue,arg);%},
writeAttr [6] IMPLICIT SEQUENCE {
AttrId [[p (PEPYPARM)&(arg->updates.do_list.do_cmd.wrt_attrib)]],
AttrExtent [[p (PEPYPARM)&(arg->updates.do_list.do_cmd.wrt_attrib)]]
%{arg->updates.do_list.do_type = 6;
(void) enq(&ndq_queue,arg);%},
erase [7] IMPLICIT SEQUENCE {
startErase Pointer [[p (PEPYPARM)&(arg->updates.do_list.do_cmd.erase.start_erase)]],
endErase Pointer [[p (PEPYPARM)&(arg->updates.do_list.do_cmd.erase.end_erase)]],
[[b arg->updates.do_list.do_cmd.erase.erase_attr]]
%{arg->updates.do_list.do_type = 7;
(void) enq(&ndq_queue,arg);%},
previousXarray [8] IMPLICIT NULL
%{arg->updates.do_list.do_type = 8;
(void) enq(&ndq_queue,arg);%},
previousYarray [9] IMPLICIT NULL
%{arg->updates.do_list.do_type = 9;
(void) enq(&ndq_queue,arg);%}
TEXT_UPDATE *arg = (TEXT_UPDATE *)parm;
if( !(arg = (TEXT_UPDATE *)malloc(sizeof(TEXT_UPDATE)) ))
adios (NULLCP, "out of memory");
[[s arg->updates.co_list.co_name]],
characterUpdate [0] IMPLICIT PrintableString
[[s arg->updates.co_list.co_cmd.char_update]]
%{arg->updates.co_list.co_type = 0;
(void) enq(&ndq_queue,arg);%},
booleanUpdate [1] IMPLICIT SEQUENCE {
values [0] IMPLICIT BITSTRING
[[x arg->updates.co_list.co_cmd.bool_update.value $ arg->updates.co_list.co_cmd.bool_update.val_count]],
mask [1] IMPLICIT BITSTRING
[[x arg->updates.co_list.co_cmd.bool_update.mask $ arg->updates.co_list.co_cmd.bool_update.mask_count]]
%{arg->updates.co_list.co_type = 1;
(void) enq(&ndq_queue,arg);%},
symbolicUpdate [2] IMPLICIT INTEGER
[[i arg->updates.co_list.co_cmd.sym_update]]
%{arg->updates.co_list.co_type = 2;
(void) enq(&ndq_queue,arg);%},
integerUpdate [3] IMPLICIT INTEGER
[[i arg->updates.co_list.co_cmd.int_update]]
%{arg->updates.co_list.co_type = 3;
(void) enq(&ndq_queue,arg);%},
bitStringUpdate [4] IMPLICIT BITSTRING
arg->updates.co_list.co_cmd.bit_update.bitstring,
arg->updates.co_list.co_cmd.bit_update.bitcount);
arg->updates.co_list.co_type = 4;
(void) enq(&ndq_queue,arg);%}
EX_POINTER *arg = (EX_POINTER *)parm;
POINTER *arg = (POINTER *)parm;
current [0] IMPLICIT NULL
coords [7] IMPLICIT ExplicitPointer [[p (PEPYPARM)&(arg->e_ptr)]]
ATTRIB *arg = (ATTRIB *)parm;
graphCharRep [0] IMPLICIT INTEGER
foreColor [1] IMPLICIT INTEGER
backColor [2] IMPLICIT INTEGER
emphasis [3] IMPLICIT INTEGER
font [4] IMPLICIT INTEGER
ATTRIB *arg = (ATTRIB *)parm;
addrExtent [1] IMPLICIT SEQUENCE {
beginning Pointer [[p (PEPYPARM)&(arg->beg_p)]],
ending Pointer [[p (PEPYPARM)&(arg->end_p)]]
modalExtent [2] IMPLICIT NULL
* deq take something out of a fifo queue (a la knuth)
* elements are circularly linked
* q head points to last entry in queue
register TEXT_UPDATE **qhp;
register TEXT_UPDATE *elem;
if( (elem = (*qhp)) != 0 )
(*qhp)->ndq_elem = elem->ndq_elem;
if( elem == elem->ndq_elem )
* enq enter something in a queue
* queue format is same as deq above
register TEXT_UPDATE **qhp;
register TEXT_UPDATE *elem;
register TEXT_UPDATE *liq;
if( (liq = (*qhp)) == 0 )
elem->ndq_elem = (*qhp)->ndq_elem;
return ( (int) liq ); /* last-in-queue zero, says queue was empty */
* fiq get the first in queue - no delinking
* return zero if nothing in queue
register TEXT_UPDATE **qhp;
if( (e = *qhp) != 0 ) /* something in queue */
e = e->ndq_elem; /* \10get first in queue */
return( e ); /* return that value */