|
|
1.1 root 1: -- VTPM: encode NDQ PDU
2:
3: -- $Header: /f/osi/vt/RCS/send_text.py,v 7.0 89/11/23 22:31:44 mrose Rel $
4: --
5: --
6: -- $Log: send_text.py,v $
7: -- Revision 7.0 89/11/23 22:31:44 mrose
8: -- Release 6.0
9: --
10:
11: --
12: -- NOTICE
13: --
14: -- Acquisition, use, and distribution of this module and related
15: -- materials are subject to the restrictions of a license agreement.
16: -- Consult the Preface in the User's Manual for the full terms of
17: -- this agreement.
18: --
19: --
20:
21:
22: NDQPDU DEFINITIONS ::=
23:
24: %{
25: #include <stdio.h>
26: #include "sector1.h"
27:
28: #undef PEPYPARM
29: #define PEPYPARM int *
30:
31: #undef PEPYTEST
32:
33: #ifdef PEPYTEST
34:
35: char *myname;
36: int l;
37: TEXT_UPDATE ud;
38:
39: TEXT_UPDATE *ndq_queue;
40:
41: main(argc,argv)
42: int argc;
43: char **argv;
44: {
45:
46: PE pe;
47:
48: myname = argv[0];
49:
50: ud.echo_sw = 1;
51: ud.type_sw = 0;
52: ud.updates.do_list.do_name = "display";
53: ud.updates.do_list.do_type = 5;
54: ud.updates.do_list.do_cmd.text_ud.text_ptr = "pissant";
55: ud.updates.do_list.do_cmd.text_ud.text_count = 7;
56:
57: build_NDQPDU_NDQpdu(&pe,1,NULL,NULLCP,&ud);
58:
59: print_NDQPDU_NDQpdu(pe,1,NULLIP,NULLVP,&ud);
60:
61: if(unbuild_NDQPDU_NDQpdu(pe,1,NULLIP,NULLVP,NULLCP)==NOTOK)
62: (void)printf("Can't Unbuild\n");;
63:
64: exit(0);
65: }
66:
67: #endif
68:
69: %}
70:
71: BEGIN
72:
73: SECTIONS build none none
74:
75: NDQpdu ::= CHOICE <<1>>
76:
77: {
78: ndqpdu [6] IMPLICIT NDQcontent [[p (PEPYPARM)parm]]
79: }
80:
81: NDQcontent
82: %{ int j; %} ::=
83: SEQUENCE OF <<j=0; j<1; j++>> VTsdi [[p (PEPYPARM)parm]]
84:
85: VTsdi
86: %{
87: int j,k;
88: TEXT_UPDATE *arg = (TEXT_UPDATE *)parm;
89: %}
90: ::= CHOICE <<arg->echo_sw + 1>> {
91: echoNow [0] IMPLICIT SEQUENCE OF <<k=0; k<1; k++>> ObjectUpdate
92: [[p (PEPYPARM)parm]],
93:
94: notEchoNow [1] IMPLICIT SEQUENCE OF <<j=0; j<1; j++>> ObjectUpdate
95: [[p (PEPYPARM)parm]]
96: }
97:
98: ObjectUpdate
99: %{
100: int j;
101: TEXT_UPDATE *arg = (TEXT_UPDATE *)parm;
102: %} ::=
103: CHOICE <<arg->type_sw + 1>> {
104: display [0] IMPLICIT SEQUENCE {
105: doName PrintableString
106: [[s arg->updates.do_list.do_name]],
107: SEQUENCE OF <<j=0; j<1; j++>>
108: DOupdate [[p (PEPYPARM)&(arg->updates.do_list)]]
109: },
110: control [1] IMPLICIT COupdate [[p (PEPYPARM)&(arg->updates.co_list)]]
111: }
112:
113:
114: DOupdate
115: %{
116: DO_UPDATE *arg = (DO_UPDATE *)parm;
117: %}
118: ::= CHOICE <<arg->do_type + 1>> {
119: nextXarray [0] IMPLICIT NULL,
120: nextYarray [1] IMPLICIT NULL,
121: ptr-relative [2] IMPLICIT ExplicitPointer [[p (PEPYPARM)&(arg->do_cmd.ptr_rel)]],
122: ptr-absolute [3] IMPLICIT Pointer [[p (PEPYPARM)&(arg->do_cmd.ptr_abs)]],
123: text [4] IMPLICIT OCTETSTRING
124: [[o arg->do_cmd.text_ud.text_ptr $ arg->do_cmd.text_ud.text_count]],
125:
126: repeatText [5] IMPLICIT SEQUENCE {
127: finishAddress Pointer
128: [[p (PEPYPARM)&(arg->do_cmd.rpt_seq.fin_addr)]],
129:
130: OCTETSTRING
131: [[o arg->do_cmd.rpt_seq.text $ arg->do_cmd.rpt_seq.text_count]]
132: },
133:
134: writeAttr [6] IMPLICIT SEQUENCE {
135: AttrId [[p (PEPYPARM)&(arg->do_cmd.wrt_attrib)]],
136: AttrExtent [[p (PEPYPARM)&(arg->do_cmd.wrt_attrib)]]
137: },
138:
139: erase [7] IMPLICIT SEQUENCE {
140: startErase Pointer[[p (PEPYPARM)&(arg->do_cmd.erase.start_erase)]],
141: endErase Pointer [[p (PEPYPARM)&(arg->do_cmd.erase.end_erase)]],
142: eraseAttr BOOLEAN
143: [[b arg->do_cmd.erase.erase_attr]]
144: },
145:
146: previousXarray [8] IMPLICIT NULL,
147: previousYarray [9] IMPLICIT NULL
148: }
149:
150: COupdate
151: %{
152: CO_UPDATE *arg = (CO_UPDATE *)parm;
153: %}
154: ::= SEQUENCE {
155: coName PrintableString
156: [[s arg->co_name]],
157:
158: objectUpdate CHOICE <<arg->co_type + 1>> {
159: characterUpdate [0] IMPLICIT PrintableString
160: [[s arg->co_cmd.char_update]],
161:
162: booleanUpdate [1] IMPLICIT SEQUENCE {
163: values [0] IMPLICIT BITSTRING
164: [[x arg->co_cmd.bool_update.value $ arg->co_cmd.bool_update.val_count]],
165:
166: mask [1] IMPLICIT BITSTRING
167: [[x arg->co_cmd.bool_update.mask $ arg->co_cmd.bool_update.mask_count]]
168: },
169:
170: symbolicUpdate [2] IMPLICIT INTEGER
171: [[i arg->co_cmd.sym_update]],
172:
173: integerUpdate [3] IMPLICIT INTEGER
174: [[i arg->co_cmd.int_update]],
175:
176: bitStringUpdate [4] IMPLICIT BITSTRING
177: [[x int2strb (arg->co_cmd.bit_update.bitstring,
178: arg->co_cmd.bit_update.bitcount)
179: $ arg->co_cmd.bit_update.bitcount]]
180: }
181: }
182:
183: ExplicitPointer
184: %{
185: EX_POINTER *arg = (EX_POINTER *)parm;
186: %}
187: ::= SEQUENCE {
188: x [0] IMPLICIT INTEGER
189: [[i arg->x_value]]
190: OPTIONAL
191: <<arg->x_true>>,
192:
193: y [1] IMPLICIT INTEGER
194: [[i arg->y_value]]
195: OPTIONAL
196: <<arg->y_true>>,
197:
198: z [2] IMPLICIT INTEGER
199: [[i arg->z_value]]
200: OPTIONAL
201: <<arg->z_true>>
202: }
203:
204: Pointer
205: %{
206: POINTER *arg = (POINTER *)parm;
207: %}
208: ::= CHOICE <<arg->ptr_type + 1>> {
209: current [0] IMPLICIT NULL,
210: start [1] IMPLICIT NULL,
211: startY [2] IMPLICIT NULL,
212: startX [3] IMPLICIT NULL,
213: end [4] IMPLICIT NULL,
214: endY [5] IMPLICIT NULL,
215: endX [6] IMPLICIT NULL,
216: coords [7] IMPLICIT ExplicitPointer [[p (PEPYPARM)&(arg->e_ptr)]]
217: }
218:
219: AttrId
220: %{
221: ATTRIB *arg = (ATTRIB *)parm;
222: %}
223: ::= CHOICE <<arg->attr_id + 1>> {
224: graphCharRep [0] IMPLICIT INTEGER
225: [[i arg->attr_val]],
226:
227: foreColor [1] IMPLICIT INTEGER
228: [[i arg->attr_val]],
229:
230: backColor [2] IMPLICIT INTEGER
231: [[i arg->attr_val]],
232:
233: emphasis [3] IMPLICIT INTEGER
234: [[i arg->attr_val]],
235:
236: font [4] IMPLICIT INTEGER
237: [[i arg->attr_val]]
238: }
239:
240: AttrExtent
241: %{
242: ATTRIB *arg = (ATTRIB *)parm;
243: %}
244: ::= CHOICE <<arg->attr_ext + 1>> {
245: global [0] IMPLICIT NULL,
246: addrExtent [1] IMPLICIT SEQUENCE {
247: beginning Pointer [[p (PEPYPARM)&(arg->beg_p)]],
248: ending Pointer [[p (PEPYPARM)&(arg->end_p)]]
249: },
250: modalExtent [2] IMPLICIT NULL
251: }
252:
253: END
254:
255: %{
256:
257: #ifdef PEPYTEST
258:
259: void advise(what,fmt,a,b,c,d,e,f,g,h,i,j)
260: char *what, *fmt, *a, *b, *c, *d, *e, *f, *g, *h, *i, *j;
261: {
262:
263: (void) fflush(stdout);
264:
265: fprintf(stderr,"%s: ",myname);
266: fprintf(stderr,fmt,a,b,c,d,e,f,g,h,i,j);
267: if(what)
268: (void) fputc(' ',stderr),perror(what);
269: else
270: (void) fputc('\n',stderr);
271: (void)fflush(stderr);
272: }
273:
274: testdebug(pe,words)
275: PE pe;
276: char *words;
277: {
278:
279: printf("%s\n",words);
280: }
281:
282: #endif
283:
284: %}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.