xref: /plan9/sys/src/libscribble/syms (revision 7a6fcd5bce630b4e99dc38b482eea265c04bf41a)
1sizeof_1_ = 8;
2aggr _1_
3{
4	'U' 0 lo;
5	'U' 4 hi;
6};
7
8defn
9_1_(addr) {
10	complex _1_ addr;
11	print("	lo	", addr.lo, "\n");
12	print("	hi	", addr.hi, "\n");
13};
14
15sizeofFPdbleword = 8;
16aggr FPdbleword
17{
18	'F' 0 x;
19	{
20	'U' 0 lo;
21	'U' 4 hi;
22	};
23};
24
25defn
26FPdbleword(addr) {
27	complex FPdbleword addr;
28	print("	x	", addr.x, "\n");
29	print("_1_ {\n");
30		_1_(addr+0);
31	print("}\n");
32};
33
34UTFmax = 3;
35Runesync = 128;
36Runeself = 128;
37Runeerror = 65533;
38sizeofFmt = 48;
39aggr Fmt
40{
41	'b' 0 runes;
42	'X' 4 start;
43	'X' 8 to;
44	'X' 12 stop;
45	'X' 16 flush;
46	'X' 20 farg;
47	'D' 24 nfmt;
48	'X' 28 args;
49	'D' 32 r;
50	'D' 36 width;
51	'D' 40 prec;
52	'U' 44 flags;
53};
54
55defn
56Fmt(addr) {
57	complex Fmt addr;
58	print("	runes	", addr.runes, "\n");
59	print("	start	", addr.start\X, "\n");
60	print("	to	", addr.to\X, "\n");
61	print("	stop	", addr.stop\X, "\n");
62	print("	flush	", addr.flush\X, "\n");
63	print("	farg	", addr.farg\X, "\n");
64	print("	nfmt	", addr.nfmt, "\n");
65	print("	args	", addr.args\X, "\n");
66	print("	r	", addr.r, "\n");
67	print("	width	", addr.width, "\n");
68	print("	prec	", addr.prec, "\n");
69	print("	flags	", addr.flags, "\n");
70};
71
72FmtWidth = 1;
73FmtLeft = 2;
74FmtPrec = 4;
75FmtSharp = 8;
76FmtSpace = 16;
77FmtSign = 32;
78FmtZero = 64;
79FmtUnsigned = 128;
80FmtShort = 256;
81FmtLong = 512;
82FmtVLong = 1024;
83FmtComma = 2048;
84FmtByte = 4096;
85FmtFlag = 8192;
86sizeofTm = 40;
87aggr Tm
88{
89	'D' 0 sec;
90	'D' 4 min;
91	'D' 8 hour;
92	'D' 12 mday;
93	'D' 16 mon;
94	'D' 20 year;
95	'D' 24 wday;
96	'D' 28 yday;
97	'a' 32 zone;
98	'D' 36 tzoff;
99};
100
101defn
102Tm(addr) {
103	complex Tm addr;
104	print("	sec	", addr.sec, "\n");
105	print("	min	", addr.min, "\n");
106	print("	hour	", addr.hour, "\n");
107	print("	mday	", addr.mday, "\n");
108	print("	mon	", addr.mon, "\n");
109	print("	year	", addr.year, "\n");
110	print("	wday	", addr.wday, "\n");
111	print("	yday	", addr.yday, "\n");
112	print("	zone	", addr.zone, "\n");
113	print("	tzoff	", addr.tzoff, "\n");
114};
115
116PNPROC = 1;
117PNGROUP = 2;
118Profoff = 0;
119Profuser = 1;
120Profkernel = 2;
121Proftime = 3;
122Profsample = 4;
123sizeofLock = 4;
124aggr Lock
125{
126	'D' 0 val;
127};
128
129defn
130Lock(addr) {
131	complex Lock addr;
132	print("	val	", addr.val, "\n");
133};
134
135sizeofQLp = 12;
136aggr QLp
137{
138	'D' 0 inuse;
139	'A' QLp 4 next;
140	'C' 8 state;
141};
142
143defn
144QLp(addr) {
145	complex QLp addr;
146	print("	inuse	", addr.inuse, "\n");
147	print("	next	", addr.next\X, "\n");
148	print("	state	", addr.state, "\n");
149};
150
151sizeofQLock = 16;
152aggr QLock
153{
154	Lock 0 lock;
155	'D' 4 locked;
156	'A' QLp 8 $head;
157	'A' QLp 12 $tail;
158};
159
160defn
161QLock(addr) {
162	complex QLock addr;
163	print("Lock lock {\n");
164	Lock(addr.lock);
165	print("}\n");
166	print("	locked	", addr.locked, "\n");
167	print("	$head	", addr.$head\X, "\n");
168	print("	$tail	", addr.$tail\X, "\n");
169};
170
171sizeofRWLock = 20;
172aggr RWLock
173{
174	Lock 0 lock;
175	'D' 4 readers;
176	'D' 8 writer;
177	'A' QLp 12 $head;
178	'A' QLp 16 $tail;
179};
180
181defn
182RWLock(addr) {
183	complex RWLock addr;
184	print("Lock lock {\n");
185	Lock(addr.lock);
186	print("}\n");
187	print("	readers	", addr.readers, "\n");
188	print("	writer	", addr.writer, "\n");
189	print("	$head	", addr.$head\X, "\n");
190	print("	$tail	", addr.$tail\X, "\n");
191};
192
193sizeofRendez = 12;
194aggr Rendez
195{
196	'A' QLock 0 l;
197	'A' QLp 4 $head;
198	'A' QLp 8 $tail;
199};
200
201defn
202Rendez(addr) {
203	complex Rendez addr;
204	print("	l	", addr.l\X, "\n");
205	print("	$head	", addr.$head\X, "\n");
206	print("	$tail	", addr.$tail\X, "\n");
207};
208
209sizeofNetConnInfo = 36;
210aggr NetConnInfo
211{
212	'X' 0 dir;
213	'X' 4 root;
214	'X' 8 spec;
215	'X' 12 lsys;
216	'X' 16 lserv;
217	'X' 20 rsys;
218	'X' 24 rserv;
219	'X' 28 laddr;
220	'X' 32 raddr;
221};
222
223defn
224NetConnInfo(addr) {
225	complex NetConnInfo addr;
226	print("	dir	", addr.dir\X, "\n");
227	print("	root	", addr.root\X, "\n");
228	print("	spec	", addr.spec\X, "\n");
229	print("	lsys	", addr.lsys\X, "\n");
230	print("	lserv	", addr.lserv\X, "\n");
231	print("	rsys	", addr.rsys\X, "\n");
232	print("	rserv	", addr.rserv\X, "\n");
233	print("	laddr	", addr.laddr\X, "\n");
234	print("	raddr	", addr.raddr\X, "\n");
235};
236
237RFNAMEG = 1;
238RFENVG = 2;
239RFFDG = 4;
240RFNOTEG = 8;
241RFPROC = 16;
242RFMEM = 32;
243RFNOWAIT = 64;
244RFCNAMEG = 1024;
245RFCENVG = 2048;
246RFCFDG = 4096;
247RFREND = 8192;
248RFNOMNT = 16384;
249sizeofQid = 16;
250aggr Qid
251{
252	'W' 0 path;
253	'U' 8 vers;
254	'b' 12 type;
255};
256
257defn
258Qid(addr) {
259	complex Qid addr;
260	print("	path	", addr.path, "\n");
261	print("	vers	", addr.vers, "\n");
262	print("	type	", addr.type, "\n");
263};
264
265sizeofDir = 60;
266aggr Dir
267{
268	'u' 0 type;
269	'U' 4 dev;
270	Qid 8 qid;
271	'U' 24 mode;
272	'U' 28 atime;
273	'U' 32 mtime;
274	'V' 36 length;
275	'X' 44 name;
276	'X' 48 uid;
277	'X' 52 gid;
278	'X' 56 muid;
279};
280
281defn
282Dir(addr) {
283	complex Dir addr;
284	print("	type	", addr.type, "\n");
285	print("	dev	", addr.dev, "\n");
286	print("Qid qid {\n");
287	Qid(addr.qid);
288	print("}\n");
289	print("	mode	", addr.mode, "\n");
290	print("	atime	", addr.atime, "\n");
291	print("	mtime	", addr.mtime, "\n");
292	print("	length	", addr.length, "\n");
293	print("	name	", addr.name\X, "\n");
294	print("	uid	", addr.uid\X, "\n");
295	print("	gid	", addr.gid\X, "\n");
296	print("	muid	", addr.muid\X, "\n");
297};
298
299sizeofWaitmsg = 20;
300aggr Waitmsg
301{
302	'D' 0 pid;
303	'a' 4 time;
304	'X' 16 msg;
305};
306
307defn
308Waitmsg(addr) {
309	complex Waitmsg addr;
310	print("	pid	", addr.pid, "\n");
311	print("	time	", addr.time, "\n");
312	print("	msg	", addr.msg\X, "\n");
313};
314
315sizeofIOchunk = 8;
316aggr IOchunk
317{
318	'X' 0 addr;
319	'U' 4 len;
320};
321
322defn
323IOchunk(addr) {
324	complex IOchunk addr;
325	print("	addr	", addr.addr\X, "\n");
326	print("	len	", addr.len, "\n");
327};
328
329sizeof_2_ = 32;
330aggr _2_
331{
332	'D' 0 fd;
333	'C' 4 flags;
334	'C' 5 state;
335	'X' 8 buf;
336	'X' 12 rp;
337	'X' 16 wp;
338	'X' 20 lp;
339	'D' 24 bufl;
340	'a' 28 unbuf;
341};
342
343defn
344_2_(addr) {
345	complex _2_ addr;
346	print("	fd	", addr.fd, "\n");
347	print("	flags	", addr.flags, "\n");
348	print("	state	", addr.state, "\n");
349	print("	buf	", addr.buf\X, "\n");
350	print("	rp	", addr.rp\X, "\n");
351	print("	wp	", addr.wp\X, "\n");
352	print("	lp	", addr.lp\X, "\n");
353	print("	bufl	", addr.bufl, "\n");
354	print("	unbuf	", addr.unbuf, "\n");
355};
356
357DOpaque = 4294967295;
358DTransparent = 0;
359DBlack = 255;
360DWhite = 4294967295;
361DRed = 4278190335;
362DGreen = 16711935;
363DBlue = 65535;
364DCyan = 16777215;
365DMagenta = 4278255615;
366DYellow = 4294902015;
367DPaleyellow = 4294945535;
368DDarkyellow = 4008615679;
369DDarkgreen = 1149781247;
370DPalegreen = 2868882175;
371DMedgreen = 2295105791;
372DDarkblue = 22015;
373DPalebluegreen = 2868903935;
374DPaleblue = 48127;
375DBluegreen = 8947967;
376DGreygreen = 1437248255;
377DPalegreygreen = 2666458879;
378DYellowgreen = 2576960767;
379DMedblue = 39423;
380DGreyblue = 6142975;
381DPalegreyblue = 1234427391;
382DPurpleblue = 2290666751;
383DNotacolor = 4294967040;
384DNofill = 4294967040;
385Displaybufsize = 8000;
386ICOSSCALE = 1024;
387Borderwidth = 4;
388Refbackup = 0;
389Refnone = 1;
390Refmesg = 2;
391Endsquare = 0;
392Enddisc = 1;
393Endarrow = 2;
394Endmask = 31;
395Clear = 0;
396SinD = 8;
397DinS = 4;
398SoutD = 2;
399DoutS = 1;
400S = 10;
401SoverD = 11;
402SatopD = 9;
403SxorD = 3;
404D = 5;
405DoverS = 7;
406DatopS = 6;
407DxorS = 3;
408Ncomp = 12;
409CRed = 0;
410CGreen = 1;
411CBlue = 2;
412CGrey = 3;
413CAlpha = 4;
414CMap = 5;
415CIgnore = 6;
416NChan = 7;
417GREY1 = 49;
418GREY2 = 50;
419GREY4 = 52;
420GREY8 = 56;
421CMAP8 = 88;
422RGB15 = 1627723045;
423RGB16 = 333349;
424RGB24 = 530472;
425RGBA32 = 135800904;
426ARGB32 = 1208490024;
427XRGB32 = 1745360936;
428BGR24 = 2627592;
429ABGR32 = 1210587144;
430XBGR32 = 1747458056;
431sizeofPoint = 8;
432aggr Point
433{
434	'D' 0 x;
435	'D' 4 y;
436};
437
438defn
439Point(addr) {
440	complex Point addr;
441	print("	x	", addr.x, "\n");
442	print("	y	", addr.y, "\n");
443};
444
445sizeofRectangle = 16;
446aggr Rectangle
447{
448	Point 0 min;
449	Point 8 max;
450};
451
452defn
453Rectangle(addr) {
454	complex Rectangle addr;
455	print("Point min {\n");
456	Point(addr.min);
457	print("}\n");
458	print("Point max {\n");
459	Point(addr.max);
460	print("}\n");
461};
462
463sizeofScreen = 16;
464aggr Screen
465{
466	'X' 0 display;
467	'D' 4 id;
468	'X' 8 image;
469	'X' 12 fill;
470};
471
472defn
473Screen(addr) {
474	complex Screen addr;
475	print("	display	", addr.display\X, "\n");
476	print("	id	", addr.id, "\n");
477	print("	image	", addr.image\X, "\n");
478	print("	fill	", addr.fill\X, "\n");
479};
480
481sizeofDisplay = 176;
482aggr Display
483{
484	QLock 0 qlock;
485	'D' 16 locking;
486	'D' 20 dirno;
487	'D' 24 fd;
488	'D' 28 reffd;
489	'D' 32 ctlfd;
490	'D' 36 imageid;
491	'D' 40 $local;
492	'X' 44 error;
493	'X' 48 devdir;
494	'X' 52 windir;
495	'a' 56 oldlabel;
496	'U' 120 dataqid;
497	'X' 124 white;
498	'X' 128 black;
499	'X' 132 opaque;
500	'X' 136 transparent;
501	'X' 140 image;
502	'X' 144 buf;
503	'D' 148 bufsize;
504	'X' 152 bufp;
505	'X' 156 defaultfont;
506	'X' 160 defaultsubfont;
507	'X' 164 windows;
508	'X' 168 screenimage;
509	'D' 172 _isnewdisplay;
510};
511
512defn
513Display(addr) {
514	complex Display addr;
515	print("QLock qlock {\n");
516	QLock(addr.qlock);
517	print("}\n");
518	print("	locking	", addr.locking, "\n");
519	print("	dirno	", addr.dirno, "\n");
520	print("	fd	", addr.fd, "\n");
521	print("	reffd	", addr.reffd, "\n");
522	print("	ctlfd	", addr.ctlfd, "\n");
523	print("	imageid	", addr.imageid, "\n");
524	print("	$local	", addr.$local, "\n");
525	print("	error	", addr.error\X, "\n");
526	print("	devdir	", addr.devdir\X, "\n");
527	print("	windir	", addr.windir\X, "\n");
528	print("	oldlabel	", addr.oldlabel, "\n");
529	print("	dataqid	", addr.dataqid, "\n");
530	print("	white	", addr.white\X, "\n");
531	print("	black	", addr.black\X, "\n");
532	print("	opaque	", addr.opaque\X, "\n");
533	print("	transparent	", addr.transparent\X, "\n");
534	print("	image	", addr.image\X, "\n");
535	print("	buf	", addr.buf\X, "\n");
536	print("	bufsize	", addr.bufsize, "\n");
537	print("	bufp	", addr.bufp\X, "\n");
538	print("	defaultfont	", addr.defaultfont\X, "\n");
539	print("	defaultsubfont	", addr.defaultsubfont\X, "\n");
540	print("	windows	", addr.windows\X, "\n");
541	print("	screenimage	", addr.screenimage\X, "\n");
542	print("	_isnewdisplay	", addr._isnewdisplay, "\n");
543};
544
545sizeofImage = 60;
546aggr Image
547{
548	'A' Display 0 display;
549	'D' 4 id;
550	Rectangle 8 r;
551	Rectangle 24 clipr;
552	'D' 40 depth;
553	'U' 44 chan;
554	'D' 48 repl;
555	'A' Screen 52 screen;
556	'A' Image 56 next;
557};
558
559defn
560Image(addr) {
561	complex Image addr;
562	print("	display	", addr.display\X, "\n");
563	print("	id	", addr.id, "\n");
564	print("Rectangle r {\n");
565	Rectangle(addr.r);
566	print("}\n");
567	print("Rectangle clipr {\n");
568	Rectangle(addr.clipr);
569	print("}\n");
570	print("	depth	", addr.depth, "\n");
571	print("	chan	", addr.chan, "\n");
572	print("	repl	", addr.repl, "\n");
573	print("	screen	", addr.screen\X, "\n");
574	print("	next	", addr.next\X, "\n");
575};
576
577sizeofRGB = 12;
578aggr RGB
579{
580	'U' 0 red;
581	'U' 4 green;
582	'U' 8 blue;
583};
584
585defn
586RGB(addr) {
587	complex RGB addr;
588	print("	red	", addr.red, "\n");
589	print("	green	", addr.green, "\n");
590	print("	blue	", addr.blue, "\n");
591};
592
593sizeofFontchar = 8;
594aggr Fontchar
595{
596	'D' 0 x;
597	'b' 4 top;
598	'b' 5 bottom;
599	'C' 6 left;
600	'b' 7 width;
601};
602
603defn
604Fontchar(addr) {
605	complex Fontchar addr;
606	print("	x	", addr.x, "\n");
607	print("	top	", addr.top, "\n");
608	print("	bottom	", addr.bottom, "\n");
609	print("	left	", addr.left, "\n");
610	print("	width	", addr.width, "\n");
611};
612
613sizeofSubfont = 20;
614aggr Subfont
615{
616	'X' 0 name;
617	'd' 4 n;
618	'b' 6 height;
619	'C' 7 ascent;
620	'A' Fontchar 8 info;
621	'A' Image 12 bits;
622	'D' 16 ref;
623};
624
625defn
626Subfont(addr) {
627	complex Subfont addr;
628	print("	name	", addr.name\X, "\n");
629	print("	n	", addr.n, "\n");
630	print("	height	", addr.height, "\n");
631	print("	ascent	", addr.ascent, "\n");
632	print("	info	", addr.info\X, "\n");
633	print("	bits	", addr.bits\X, "\n");
634	print("	ref	", addr.ref, "\n");
635};
636
637LOG2NFCACHE = 6;
638NFCACHE = 64;
639NFLOOK = 5;
640NFSUBF = 2;
641MAXFCACHE = 1029;
642MAXSUBF = 50;
643DSUBF = 4;
644SUBFAGE = 10000;
645CACHEAGE = 10000;
646sizeofCachefont = 16;
647aggr Cachefont
648{
649	'u' 0 min;
650	'u' 2 max;
651	'D' 4 offset;
652	'X' 8 name;
653	'X' 12 subfontname;
654};
655
656defn
657Cachefont(addr) {
658	complex Cachefont addr;
659	print("	min	", addr.min, "\n");
660	print("	max	", addr.max, "\n");
661	print("	offset	", addr.offset, "\n");
662	print("	name	", addr.name\X, "\n");
663	print("	subfontname	", addr.subfontname\X, "\n");
664};
665
666sizeofCacheinfo = 8;
667aggr Cacheinfo
668{
669	'u' 0 x;
670	'b' 2 width;
671	'C' 3 left;
672	'u' 4 value;
673	'u' 6 age;
674};
675
676defn
677Cacheinfo(addr) {
678	complex Cacheinfo addr;
679	print("	x	", addr.x, "\n");
680	print("	width	", addr.width, "\n");
681	print("	left	", addr.left, "\n");
682	print("	value	", addr.value, "\n");
683	print("	age	", addr.age, "\n");
684};
685
686sizeofCachesubf = 12;
687aggr Cachesubf
688{
689	'U' 0 age;
690	'A' Cachefont 4 cf;
691	'A' Subfont 8 f;
692};
693
694defn
695Cachesubf(addr) {
696	complex Cachesubf addr;
697	print("	age	", addr.age, "\n");
698	print("	cf	", addr.cf\X, "\n");
699	print("	f	", addr.f\X, "\n");
700};
701
702sizeofFont = 48;
703aggr Font
704{
705	'X' 0 name;
706	'A' Display 4 display;
707	'd' 8 height;
708	'd' 10 ascent;
709	'd' 12 width;
710	'd' 14 nsub;
711	'U' 16 age;
712	'D' 20 maxdepth;
713	'D' 24 ncache;
714	'D' 28 nsubf;
715	'A' Cacheinfo 32 cache;
716	'A' Cachesubf 36 subf;
717	'A' Cachefont 40 sub;
718	'A' Image 44 cacheimage;
719};
720
721defn
722Font(addr) {
723	complex Font addr;
724	print("	name	", addr.name\X, "\n");
725	print("	display	", addr.display\X, "\n");
726	print("	height	", addr.height, "\n");
727	print("	ascent	", addr.ascent, "\n");
728	print("	width	", addr.width, "\n");
729	print("	nsub	", addr.nsub, "\n");
730	print("	age	", addr.age, "\n");
731	print("	maxdepth	", addr.maxdepth, "\n");
732	print("	ncache	", addr.ncache, "\n");
733	print("	nsubf	", addr.nsubf, "\n");
734	print("	cache	", addr.cache\X, "\n");
735	print("	subf	", addr.subf\X, "\n");
736	print("	sub	", addr.sub\X, "\n");
737	print("	cacheimage	", addr.cacheimage\X, "\n");
738};
739
740complex Point ZP;
741complex Rectangle ZR;
742complex Display display;
743complex Font font;
744complex Image screen;
745complex Screen _screen;
746sizeofpen_point = 12;
747aggr pen_point
748{
749	{
750	'D' 0 x;
751	'D' 4 y;
752	};
753	'D' 8 chaincode;
754};
755
756defn
757pen_point(addr) {
758	complex pen_point addr;
759	print("Point {\n");
760		Point(addr+0);
761	print("}\n");
762	print("	chaincode	", addr.chaincode, "\n");
763};
764
765sizeofStroke = 8;
766aggr Stroke
767{
768	'U' 0 npts;
769	'A' pen_point 4 pts;
770};
771
772defn
773Stroke(addr) {
774	complex Stroke addr;
775	print("	npts	", addr.npts, "\n");
776	print("	pts	", addr.pts\X, "\n");
777};
778
779sizeofScribble = 40;
780aggr Scribble
781{
782	'A' Point 0 pt;
783	'D' 4 ppasize;
784	Stroke 8 ps;
785	'X' 16 graf;
786	'D' 20 capsLock;
787	'D' 24 puncShift;
788	'D' 28 tmpShift;
789	'D' 32 ctrlShift;
790	'D' 36 curCharSet;
791};
792
793defn
794Scribble(addr) {
795	complex Scribble addr;
796	print("	pt	", addr.pt\X, "\n");
797	print("	ppasize	", addr.ppasize, "\n");
798	print("Stroke ps {\n");
799	Stroke(addr.ps);
800	print("}\n");
801	print("	graf	", addr.graf\X, "\n");
802	print("	capsLock	", addr.capsLock, "\n");
803	print("	puncShift	", addr.puncShift, "\n");
804	print("	tmpShift	", addr.tmpShift, "\n");
805	print("	ctrlShift	", addr.ctrlShift, "\n");
806	print("	curCharSet	", addr.curCharSet, "\n");
807};
808
809sizeof_3_ = 12;
810aggr _3_
811{
812	'X' 0 ri_locale;
813	'X' 4 ri_name;
814	'X' 8 ri_subset;
815};
816
817defn
818_3_(addr) {
819	complex _3_ addr;
820	print("	ri_locale	", addr.ri_locale\X, "\n");
821	print("	ri_name	", addr.ri_name\X, "\n");
822	print("	ri_subset	", addr.ri_subset\X, "\n");
823};
824
825sizeof_4_ = 20;
826aggr _4_
827{
828	Rectangle 0 pr_area;
829	'd' 16 pr_row;
830	'd' 18 pr_col;
831};
832
833defn
834_4_(addr) {
835	complex _4_ addr;
836	print("Rectangle pr_area {\n");
837	Rectangle(addr.pr_area);
838	print("}\n");
839	print("	pr_row	", addr.pr_row, "\n");
840	print("	pr_col	", addr.pr_col, "\n");
841};
842
843sizeof_ls_set = 4;
844aggr _ls_set
845{
846	'X' 0 aval;
847	'X' 0 wval;
848};
849
850defn
851_ls_set(addr) {
852	complex _ls_set addr;
853	print("	aval	", addr.aval\X, "\n");
854	print("	wval	", addr.wval\X, "\n");
855};
856
857sizeof_letterset = 8;
858aggr _letterset
859{
860	'C' 0 ls_type;
861	_ls_set 4 ls_set;
862};
863
864defn
865_letterset(addr) {
866	complex _letterset addr;
867	print("	ls_type	", addr.ls_type, "\n");
868	print("_ls_set ls_set {\n");
869	_ls_set(addr.ls_set);
870	print("}\n");
871};
872
873sizeof_5_ = 4;
874aggr _5_
875{
876	'X' 0 gval;
877	'X' 0 aval;
878	'X' 0 wval;
879	'X' 0 rcval;
880};
881
882defn
883_5_(addr) {
884	complex _5_ addr;
885	print("	gval	", addr.gval\X, "\n");
886	print("	aval	", addr.aval\X, "\n");
887	print("	wval	", addr.wval\X, "\n");
888	print("	rcval	", addr.rcval\X, "\n");
889};
890
891sizeofrec_element = 12;
892aggr rec_element
893{
894	'C' 0 re_type;
895	_5_ 4 re_result;
896	'b' 8 re_conf;
897};
898
899defn
900rec_element(addr) {
901	complex rec_element addr;
902	print("	re_type	", addr.re_type, "\n");
903	print("_5_ re_result {\n");
904	_5_(addr.re_result);
905	print("}\n");
906	print("	re_conf	", addr.re_conf, "\n");
907};
908
909sizeofrec_alternative = 20;
910aggr rec_alternative
911{
912	rec_element 0 ra_elem;
913	'U' 12 ra_nalter;
914	'A' rec_alternative 16 ra_next;
915};
916
917defn
918rec_alternative(addr) {
919	complex rec_alternative addr;
920	print("rec_element ra_elem {\n");
921	rec_element(addr.ra_elem);
922	print("}\n");
923	print("	ra_nalter	", addr.ra_nalter, "\n");
924	print("	ra_next	", addr.ra_next\X, "\n");
925};
926
927sizeofgesture = 36;
928aggr gesture
929{
930	'X' 0 g_name;
931	'U' 4 g_nhs;
932	'A' pen_point 8 g_hspots;
933	Rectangle 12 g_bbox;
934	'X' 28 g_action;
935	'X' 32 g_wsinfo;
936};
937
938defn
939gesture(addr) {
940	complex gesture addr;
941	print("	g_name	", addr.g_name\X, "\n");
942	print("	g_nhs	", addr.g_nhs, "\n");
943	print("	g_hspots	", addr.g_hspots\X, "\n");
944	print("Rectangle g_bbox {\n");
945	Rectangle(addr.g_bbox);
946	print("}\n");
947	print("	g_action	", addr.g_action\X, "\n");
948	print("	g_wsinfo	", addr.g_wsinfo\X, "\n");
949};
950
951sizeofrec_correlation = 28;
952aggr rec_correlation
953{
954	rec_element 0 ro_elem;
955	'U' 12 ro_nstrokes;
956	'A' Stroke 16 ro_strokes;
957	'X' 20 ro_start;
958	'X' 24 ro_stop;
959};
960
961defn
962rec_correlation(addr) {
963	complex rec_correlation addr;
964	print("rec_element ro_elem {\n");
965	rec_element(addr.ro_elem);
966	print("}\n");
967	print("	ro_nstrokes	", addr.ro_nstrokes, "\n");
968	print("	ro_strokes	", addr.ro_strokes\X, "\n");
969	print("	ro_start	", addr.ro_start\X, "\n");
970	print("	ro_stop	", addr.ro_stop\X, "\n");
971};
972
973sizeof_wordset = 12;
974aggr _wordset
975{
976	'X' 0 ws_pathname;
977	'X' 4 ws_recognizer;
978	'X' 8 ws_internal;
979};
980
981defn
982_wordset(addr) {
983	complex _wordset addr;
984	print("	ws_pathname	", addr.ws_pathname\X, "\n");
985	print("	ws_recognizer	", addr.ws_recognizer\X, "\n");
986	print("	ws_internal	", addr.ws_internal\X, "\n");
987};
988
989sizeof_Recognizer = 88;
990aggr _Recognizer
991{
992	'U' 0 recognizer_magic;
993	'X' 4 recognizer_version;
994	'A' _3_ 8 recognizer_info;
995	'X' 12 recognizer_specific;
996	'X' 16 recognizer_load_state;
997	'X' 20 recognizer_save_state;
998	'X' 24 recognizer_error;
999	'X' 28 recognizer_load_dictionary;
1000	'X' 32 recognizer_save_dictionary;
1001	'X' 36 recognizer_free_dictionary;
1002	'X' 40 recognizer_add_to_dictionary;
1003	'X' 44 recognizer_delete_from_dictionary;
1004	'X' 48 recognizer_set_context;
1005	'X' 52 recognizer_get_context;
1006	'X' 56 recognizer_clear;
1007	'X' 60 recognizer_get_buffer;
1008	'X' 64 recognizer_set_buffer;
1009	'X' 68 recognizer_translate;
1010	'X' 72 recognizer_get_extension_functions;
1011	'X' 76 recognizer_get_gesture_names;
1012	'X' 80 recognizer_set_gesture_action;
1013	'U' 84 recognizer_end_magic;
1014};
1015
1016defn
1017_Recognizer(addr) {
1018	complex _Recognizer addr;
1019	print("	recognizer_magic	", addr.recognizer_magic, "\n");
1020	print("	recognizer_version	", addr.recognizer_version\X, "\n");
1021	print("	recognizer_info	", addr.recognizer_info\X, "\n");
1022	print("	recognizer_specific	", addr.recognizer_specific\X, "\n");
1023	print("	recognizer_load_state	", addr.recognizer_load_state\X, "\n");
1024	print("	recognizer_save_state	", addr.recognizer_save_state\X, "\n");
1025	print("	recognizer_error	", addr.recognizer_error\X, "\n");
1026	print("	recognizer_load_dictionary	", addr.recognizer_load_dictionary\X, "\n");
1027	print("	recognizer_save_dictionary	", addr.recognizer_save_dictionary\X, "\n");
1028	print("	recognizer_free_dictionary	", addr.recognizer_free_dictionary\X, "\n");
1029	print("	recognizer_add_to_dictionary	", addr.recognizer_add_to_dictionary\X, "\n");
1030	print("	recognizer_delete_from_dictionary	", addr.recognizer_delete_from_dictionary\X, "\n");
1031	print("	recognizer_set_context	", addr.recognizer_set_context\X, "\n");
1032	print("	recognizer_get_context	", addr.recognizer_get_context\X, "\n");
1033	print("	recognizer_clear	", addr.recognizer_clear\X, "\n");
1034	print("	recognizer_get_buffer	", addr.recognizer_get_buffer\X, "\n");
1035	print("	recognizer_set_buffer	", addr.recognizer_set_buffer\X, "\n");
1036	print("	recognizer_translate	", addr.recognizer_translate\X, "\n");
1037	print("	recognizer_get_extension_functions	", addr.recognizer_get_extension_functions\X, "\n");
1038	print("	recognizer_get_gesture_names	", addr.recognizer_get_gesture_names\X, "\n");
1039	print("	recognizer_set_gesture_action	", addr.recognizer_set_gesture_action\X, "\n");
1040	print("	recognizer_end_magic	", addr.recognizer_end_magic, "\n");
1041};
1042
1043sizeofPointList = 20;
1044aggr PointList
1045{
1046	{
1047	'U' 0 npts;
1048	'A' pen_point 4 pts;
1049	};
1050	'D' 8 xrange;
1051	'D' 12 yrange;
1052	'A' PointList 16 next;
1053};
1054
1055defn
1056PointList(addr) {
1057	complex PointList addr;
1058	print("Stroke {\n");
1059		Stroke(addr+0);
1060	print("}\n");
1061	print("	xrange	", addr.xrange, "\n");
1062	print("	yrange	", addr.yrange, "\n");
1063	print("	next	", addr.next\X, "\n");
1064};
1065
1066sizeof_6_ = 1608;
1067aggr _6_
1068{
1069	'X' 0 file_name;
1070	'D' 4 nclasses;
1071	'a' 8 ex;
1072	'a' 408 cnames;
1073	'a' 808 canonex;
1074	'a' 1208 dompts;
1075};
1076
1077defn
1078_6_(addr) {
1079	complex _6_ addr;
1080	print("	file_name	", addr.file_name\X, "\n");
1081	print("	nclasses	", addr.nclasses, "\n");
1082	print("	ex	", addr.ex, "\n");
1083	print("	cnames	", addr.cnames, "\n");
1084	print("	canonex	", addr.canonex, "\n");
1085	print("	dompts	", addr.dompts, "\n");
1086};
1087
1088sizeof_7_ = 1612;
1089aggr _7_
1090{
1091	'U' 0 li_magic;
1092	_6_ 4 li_rc;
1093};
1094
1095defn
1096_7_(addr) {
1097	complex _7_ addr;
1098	print("	li_magic	", addr.li_magic, "\n");
1099	print("_6_ li_rc {\n");
1100	_6_(addr.li_rc);
1101	print("}\n");
1102};
1103
1104complex PointList add_example:l;
1105complex pen_point add_example:pts;
1106complex pen_point add_example:lpts;
1107complex PointList add_example:p;
1108complex PointList delete_examples:l;
1109complex PointList delete_examples:p;
1110complex _6_ recognize_internal:rec;
1111complex Stroke recognize_internal:str;
1112complex PointList recognize_internal:stroke;
1113complex _2_ read_classifier_points:fd;
1114complex PointList read_classifier_points:ex;
1115complex pen_point read_classifier_points:pts;
1116complex _2_ read_classifier:fd;
1117complex _6_ read_classifier:rc;
1118complex _Recognizer recognizer_getClasses:r;
1119complex _7_ recognizer_getClasses:rec;
1120complex _Recognizer isa_li:r;
1121complex _Recognizer li_recognizer_get_example:r;
1122complex pen_point li_recognizer_get_example:points;
1123complex _7_ li_recognizer_get_example:rec;
1124complex PointList li_recognizer_get_example:pl;
1125complex _Recognizer li_recognizer_load:r;
1126complex _2_ li_recognizer_load:fd;
1127complex _7_ li_recognizer_load:rec;
1128complex _6_ li_recognizer_load:rc;
1129complex _Recognizer li_recognizer_error:rec;
1130complex _Recognizer li_recognizer_clear:r;
1131complex _7_ li_recognizer_clear:rec;
1132complex _Recognizer li_recognizer_translate:r;
1133complex Stroke li_recognizer_translate:tps;
1134complex rec_alternative li_recognizer_translate:ret;
1135complex _7_ li_recognizer_translate:rec;
1136complex _6_ li_recognizer_translate:rc;
1137complex _Recognizer li_recognizer_get_extension_functions:rec;
1138complex _3_ __recognizer_internal_initialize:ri;
1139complex _Recognizer __recognizer_internal_initialize:r;
1140complex _7_ __recognizer_internal_initialize:rec;
1141complex _6_ free_rClassifier:rc;
1142complex _Recognizer __recognizer_internal_finalize:r;
1143complex _7_ __recognizer_internal_finalize:rec;
1144sizeofRegionList = 16;
1145aggr RegionList
1146{
1147	'D' 0 start;
1148	'D' 4 end;
1149	'D' 8 type;
1150	'A' RegionList 12 next;
1151};
1152
1153defn
1154RegionList(addr) {
1155	complex RegionList addr;
1156	print("	start	", addr.start, "\n");
1157	print("	end	", addr.end, "\n");
1158	print("	type	", addr.type, "\n");
1159	print("	next	", addr.next\X, "\n");
1160};
1161
1162complex _6_ lialg_initialize:rec;
1163complex _6_ lialg_recognize_stroke:rec;
1164complex PointList lialg_recognize_stroke:stroke;
1165complex PointList lialg_recognize_stroke:input_dompts;
1166complex PointList lialg_recognize_stroke:curr_dompts;
1167complex PointList lialg_preprocess_stroke:points;
1168complex PointList lialg_compute_dominant_points:points;
1169complex PointList lialg_compute_dominant_points:ipts;
1170complex RegionList lialg_compute_dominant_points:regions;
1171complex PointList lialg_compute_dominant_points:dpts;
1172complex RegionList lialg_compute_dominant_points:curr;
1173complex RegionList lialg_compute_dominant_points:next;
1174complex PointList lialg_interpolate_points:points;
1175complex PointList lialg_interpolate_points:newpts;
1176complex pen_point lialg_interpolate_points:pta;
1177complex pen_point lialg_interpolate_points:ptb;
1178complex pen_point lialg_interpolate_points:startpt;
1179complex pen_point lialg_interpolate_points:endpt;
1180complex pen_point lialg_bresline:startpt;
1181complex pen_point lialg_bresline:endpt;
1182complex PointList lialg_bresline:newpts;
1183complex PointList lialg_compute_chain_code:pts;
1184complex pen_point lialg_compute_chain_code:startpt;
1185complex pen_point lialg_compute_chain_code:endpt;
1186complex PointList lialg_compute_unit_chain_code:pts;
1187complex pen_point lialg_compute_unit_chain_code:startpt;
1188complex pen_point lialg_compute_unit_chain_code:endpt;
1189complex PointList lialg_compute_regions:pts;
1190complex RegionList lialg_compute_regions:regions;
1191complex RegionList lialg_compute_regions:curr_reg;
1192complex RegionList lialg_compute_regions:next_reg;
1193complex RegionList lialg_compute_regions:next_reg;
1194complex RegionList lialg_compute_regions:tmp;
1195complex RegionList lialg_compute_regions:prev_reg;
1196complex RegionList lialg_compute_regions:saved_next;
1197complex PointList lialg_compute_dompts:pts;
1198complex RegionList lialg_compute_dompts:regions;
1199complex PointList lialg_compute_dompts:dpts;
1200complex RegionList lialg_compute_dompts:r;
1201complex RegionList lialg_compute_dompts:curr;
1202complex PointList lialg_compute_contour_angle_set:pts;
1203complex RegionList lialg_compute_contour_angle_set:regions;
1204complex RegionList lialg_compute_contour_angle_set:curr_reg;
1205complex PointList lialg_score_stroke:input_dompts;
1206complex PointList lialg_score_stroke:curr_dompts;
1207complex PointList lialg_compute_similarity:input_dompts;
1208complex PointList lialg_compute_similarity:curr_dompts;
1209complex PointList lialg_compute_similarity:A;
1210complex PointList lialg_compute_similarity:B;
1211complex PointList lialg_compute_distance:input_dompts;
1212complex PointList lialg_compute_distance:curr_dompts;
1213complex PointList lialg_compute_distance:A;
1214complex PointList lialg_compute_distance:B;
1215complex _6_ lialg_read_classifier_digest:rec;
1216complex _2_ lialg_read_classifier_digest:fp;
1217complex PointList lialg_read_classifier_digest:dpts;
1218complex _6_ lialg_canonicalize_examples:rec;
1219complex PointList lialg_canonicalize_examples:pts;
1220complex PointList lialg_canonicalize_examples:tmp;
1221complex PointList lialg_canonicalize_examples:avg;
1222complex PointList lialg_canonicalize_example_stroke:points;
1223complex PointList lialg_compute_equipoints:points;
1224complex pen_point lialg_compute_equipoints:equipoints;
1225complex PointList lialg_compute_pathlen:points;
1226complex PointList lialg_compute_pathlen_subset:points;
1227complex PointList lialg_filter_points:points;
1228complex pen_point lialg_filter_points:filtered_pts;
1229complex PointList lialg_translate_points:points;
1230complex PointList lialg_get_bounding_box:points;
1231complex pen_point lialg_get_bounding_box:pt;
1232