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