[comp.sources.x] v11i038: wcl - Widget Creation Library, Part26/35

david@devvax.Jpl.Nasa.Gov (David E. Smyth) (02/09/91)

Submitted-by: david@devvax.Jpl.Nasa.Gov (David E. Smyth)
Posting-number: Volume 11, Issue 38
Archive-name: wcl/part26

#! /bin/sh

# Make a new directory for the wc sources, cd to it, and run kits 1
# thru 35 through sh.  When all 35 kits have been run, read README.

echo "This is wc 1.05 kit 26 (of 35).  If kit 26 is complete, the line"
echo '"'"End of kit 26 (of 35)"'" will echo at the end.'
echo ""
export PATH || (echo "You didn't use sh, you clunch." ; kill $$)
mkdir Doc Wc 2>/dev/null
echo Extracting Doc/VG2.PS:AB
sed >Doc/VG2.PS:AB <<'!STUFFY!FUNK!' -e 's/X//'
X04000403B9FFAFEEEBB6BECAAEBB6F6BBAEFFB77775DF8FEBFAFFBDAECFBC31A79=FFB00400041F59#H">$8)J'
X>222A222BE9FFDFC6EC79BF2BB1BB9FE1C39C3FBEFC2EC71FF7763763FFFFFF7FDFFDC71E687FC6EEFBBAE9B9=FEE2222A2235(Z%;#H">$8$9#J'
X08000803B9FFAF1FBFFFFFFFEBFAFFBFBEE6BFFDA0BF9=FFB00800081F(G">#H">"@"J'
X82928293E9FFDFF7FF7FDFFDFB>FEE282928280(G">#H">#<"8"J'
X08000803B9FFAFFBFEBFAFFBBACEEB>FFB008000815(G">#H">-J'
X22222223E9FFDFF7FF7FDFFDC71C7FC61BFF872C71C31B>FEE22222223F(G"`"8#H">"VJ'
X10011003B9FFAFF807FEBFAFFB>FFB11001101F(G">#H">"B"J'
X88A888ABE9FFDFF0FF7FDFFDDF<FEE088A888A8(GR8#H">"B"J'
X00000003B9FFAFFEBFAFFBCF<FFB00000001F(J#H">"B"J'
X22122213E9FFDF:FF7FDFFDC7<FEE222122200(J$y"8">"f#J'
X08440847B9FFAF:FEBFEAAAAFAFFA0183<FFB008440848(J$y"8">"B"J'
XA100A103E9FFDF:FF7FD5554FDFFC81<FEE0A100A100(J$Y"8">X"J'
X0408040BB9FFAF:FEBFEFCFAF80<FFB004080415(j%G"J"J'
X20A220A3E9FFD0907FF7FDFDF67F;FEE220A220A0(J$G"=%>%J'
X0A000A03B9FFA0:FEBFEFAFC7FFE001FC00003F;FFB00A000A1F(J$G"=%>%J'
X8088808BE9FFC0:FF7FDFDFC03F000FFF80001F;FEE08088809E&Z$8%8">">$?$J'
X04000403B9<FEBFEFFDD76377F7AF00007FF8000F;FFB004000408&J$9#8"8"<"=%?$J'
X222A222BE9<FF7FDFD377EFEFDFE00003FFFF0001;FEE2222A223F&J$;"A"?"B#J'
X08000803B9<FEBFEFAFAF1F001F:FFB00800081E&J$9"8&<"?"C"J'
X82928293E9<FF7FDFD5F8C3863743DFFF01:FEE28292829F&J$;'<"=#A"8#J'
X08000803B9<FEBFEFDFF76F75D76FAF8001FE003F9FFB00800081F&J$9&?"<$B%J'
X22222223E9<FF7FDFD677AFF9EFDFFC000301FE00039FEE22222223F&J$<"@"<$B&J'
X10011003B9<FEBFEFFEAFE000073FFFC0007F8FFB11001101F&J$9)<"<$AQJ'
X88A888ABE9<FF7FDFD77777F76D75D66DDF00000F8FEE088A888BF&J$8*<+J'
X00000003B9<FEBFEFFE376377F8F3863973AFFFD555555FF800381FIFFB00000001F&J$8T<+D"w"C'
X22122213E9<FF7FDFDFFFAAAAAA9FE001F83FFAAAAFFEE22212221F(s#z%G+D"w"C'
X08440847B9FFD55557FF/5557FEBFEFAFFFDFFFFF9F000FFC7FF5554FFFB00844085F't#z%G$8&D"W"C'
XA100A103E9FFAAA7FE/AAA7FF7FDFDFFFBF98007FFCFFFBCFFEE0A100A11F(s#z%G$9$E"J'
X0408040BB9FFD55547FF/5547FEBFEFAFFFDF03FFFDF7:FFB00408041F(S$Y%i"8$9$E"J'
X20A220A3E9FFAFC7FEBFC7FF7FD00FDFFFBF1FFFFFFB:FEE220A220BF(?#E$G(G"J'
X0A000A03B9FFDFFF7FFEBFE0AFFFDBE1C798FFF7:FFB00A000A1F(?#E#Z8'H#8#9%D'
X8088808BE9FFAFFEBFFF7F0DFFFBBEEBB9FFB07FDDFE304377FFEE08088809F(?#E#H&I$<$E'
X04000403B9FFDFFF7FFEBFAFFFDBEEBFF7DF7FDD7ED7FFB00400041F(?#E#H$J'9"G'
X222A222BE9FFAFFEBFFF7FDFFFBB5FBDFFFFFFC9FDFFEE2222A223F(?#E#H&I*9"D'
X08000803B9FFDFFF7FFEBFAFFFDBE1C7F7DE72E3FD58D38E3F63FFB00800081F(?#E#H&I.D'
X82928293E9FFAFFEBFFF7FDFFFBBEBFBFBDF755DFD574D75DFE30ED75DFEE28292829F)8#:%8#8#;#H%J"8+D'
X08000803B9FFDF87FE0FFF7FFF87FE0FFE7FFEBFAFFFDBED4F741FDD05F741FFD7ED767FFB00800081F-:)8#;#H&I"8'9"D'
X22222223E9FFAFDBFDFFFFBFFEBFFFDBFDFFFFBFFDBFFF7FDFFFBBEEBBFB5FFDD7DF75FF7BFEE22222223F(?#?";$y"8&I"8"8%8"D'
X10011003B9FFDFFF7FFFFEBFEAAAAFAFFFD82EC7F75D5F85DFDD5DFFB11001101F38,8$y"8'H.D'
X88A888ABE9FFAFDB1871FFBBA1C71FC7FEBF1871FFBA71A71DF1A65C7FFF7FD5554FDFFFBFFFFF9BFBDE3763FDD8DFF63FE37C38E3FEE088A888BF+8'8,8$Y"8$8#G"Q"PD'
X00000003B9FFDFDBEDFEAEBAEFC7FF7FEDFEFFB9BE9AE86E9AABBFFEBFEFCFAFFFDF987FF777FFB00000001F+9&8,8$G$9$E"<"I'
X22122213E9FFAFDB0DF0833FC7FEBF0DF0FFBBF0BB3DEEBEACFFFF7FDFDFFFBF1FFFDFFB8FFEE22212221F+8+8$8#8$G$9$E"<"I'
X08440847B9FFDFDAEDEE2EBFDFC7FF7FFFDAEDEEEEBBDDAF7FFEBFEFAFFFDF07FF8FF7FFFFB00844085F(8*9"9#8#8$G(G"J'
XA100A103E9FFAFAEFFBCA1BAEFC7FEBFAEBAEDABBFFF7FDFDFFFA000001C01FB:FEE0A100A11F58(8$9(=$8%E"g"C'
X60408040BB9FFDF870E70FFBFAFC71FC7FF7FFF870E70F0BB1DF1BEEC7FFEBFEFF75D8DDFF3FE7FAFFFC01F007F07F40FFFB00408041F3X8$:&>"P$E"J'
X20A220A3E9FFAFFFFFFFFFFBAFFFFFC7FEBFFF7FDF4DDDDFEDDFDFC00F03F8:FEE220A220BF(:#9#E$;%>";#FYC'
X0A000A03B9FFDFFC6FFF7FFEBFEFDEBFEFFFAFF002FFB00A000A1F(:#9#E$:"9#=";$J'
X8088808BE9FFAFFFFFFEBFFF7FDF559F78DFFC0001JFEE08088809F(?#E$;'<";$E$;#G'
X04000403B9FFDFFF7FFEBFEFDF7FC3DF777FAFFF8000C0007FF07FFFB00400041F(?#E$:'="<"C';#G'
X222A222BE9FFAFFEBFFF7FDF59DEBFEFDF70DFE08FFFFC0007FFF81FFEE2222A223F(?#E$?#<"<$A&<#G'
X08000803B9FFDFFF7FFEBFEF77FFAFF8007F81FFE0003FFC0FFFB00800081F(?#E$:$9"<">"A&<#G'
X82928293E9FFAFFEBFFF7FDF5DDDDF7FDF3F803E0003FFFE07FEE28292829F(?#E$9$8$<">"A%=#G'
X08000803B9FFDFFF7FFEBFEFF8DD8D8E38FFAF1FC000003FFF03FFB008000811(?#E$9R="<$C#>"G'
X22222223E9FFAFFEBFFF7FDFDFF0000701FF81FEE222222231(?#E$G">"C"?$E'
X10011003B9FFDFFF7FFEBFEFAF001FC0FF7FFFB110011011(?#E$G"<%@$?#F'
X88A888ABE9FFAFFEBFFF7FDFDFFFFF003F8000FFE07EFEE088A888B1(?#E$G">#?$@#F'
X00000003B9FFDFFF7FFEBFEFAFC00FF80003F03CFFB0000000114w&i"8">#?$@$E'
X22122213E9FFAFFAAAAAAAAAAAAABFC7FEBFEAAABFC7FF7FD00FDFF003800007F8183FFEE22212221F4w&G">#>%@#F'
X08440847B9FFDFF55555555555553FC7FF7FD5553FC7FEBFE0AFFE00FC00000FFC00FFB00844085F)Q8$W8#Z8">$=%@"G'
XA100A103E9FFAFFBFEBFEFFF7F0DFFF801FC000601FFEFEE0A100A100)>$D#H"?#=%@#F'
X0408040BB9FFDFF7FF7FDFFEBFAFFFFFFFFFE03FFF80FFB00408041F)>$D#H"J"B"E'
X20A220A3E9FFAFFBFEBFEFFF7FDF57F1FFEE220A220A0)>$D#H"<"w$A"F'
X0A000A03B9FFDFF7FF7FDFFEBFAFFEAAABF1FF00FFB00A000A00-:&9%;#H"<"w#A"G'
X8088808BE9FFAFFBFFFDF0E3FEBFEFF8DF9FF07F9FFF7FDFFD5553F3FEFEE080888080)8#:&9%;#H"<"W#A$E'
X04000403B9FFDFF7F75DFF7FDFF75FDFF7F7DEFEBFAFFEF3F7FC000FFFB00400040C)9":&;"<#H"<"C"A"G'
X222A222BE9FFAFFB5FFEBFEFF7DFFFFF7FDFFDFFF8FEE2222A222E)>)8%9$y"8"<"J$E'
X08000803B9FFDFF7FF7FDFF7D38D34E3E7DC38D3FEBFEAAAAFAFFE9FF0007FFB008000813)8#:/9$y"8"<"J#E'
X82928293E9FFAFFBF0E3FEBFEFF7CDF4D35DDFF0F7DEF74DFF7FD5554FDFFD:F003FEE282928280)8#:+8#9$Y"8"<-E#E'
X08000803B9FFDFF7F5FDFF7FDFF7DD85D741DFF7F05FFEBFEFCFAFFEDD8DD8FF8C307F0FFFE7F7FE01FFB00800081F)8";$8$:#9$G"<,F#E'
X22222223E9FFAFFBF6FEBFEF75D75FF7DFFF7FDFDFFDCDDDD77FDED7FFB7FDF7FFC0FEE22222223F)8#:&8":#9$G"<&:"H#D'
X10011003B9FFDFF7F75DFF7FDFF75D5DD75FFEBFEFAFFECDDC97FFFFE07FFFB11001101F-:/9$G"<%:&E#D'
X88A888ABE9FFAFFBFFFC1763FEBFEFF8DD85D7638FF7E38F38DFFF7FDFDFFDD5DD57B5D9F78634F03FFEE088A888BF-:$V9$8$9#="<"8"8)D#D'
X00000003B9FFDFF7FFFFFFFFFF7FDFFEBFEFFE30F7FE7FAFFE58D0FF8DDDF775D373F81FFFB000000000)>$D$8$9">"<*8$D#D'
X22122213E9FFAFFBFEBFEFFF7FDFFDDB6BFFDFFDD9DDDF7FDED7FFB57417F3FE0FFEE22212221F)>$D$9#B"<"@#E#D'
X08440847B9FFDFF7FF7FDFFEBFEFFB5DAFFE75F7FF07FFB008440855)>$D$;'<"<%;"8"F"D'
XA100A103E9FFAFFBFEBFEFFF7FDFFE30E38F78D3DFFDDDDDD79DD781FEE0A100A11F)a8$g8$;'<"<.F"D'
X0408040BB9FFDFF4FF7FD0FEBFEFFDD75D77774DAFFEDD8DD8FF8C37FF0E58E38637C0FFB004080400)>$D$:$8#<"<"WF#C'
X20A220A3E9FFAFF8FEBFE0FF7FDF41FE77705FDFFDE07FFEE220A220B5(S$Y%:$8#<"<"J#C'
X0A000A03B9FFDFC7FF7FC7FEBFEF5DFFB777DFAFFE<F03FFFB00A000A1F(?#E$9&8"<"<"J#C'
X8088808BE9FFAFFEBFFF7FDFDB5DFDD0DD5FDFFD<F81FFEE08088809F(?#E$8*<"<"J#C'
X04000403B9FFDFFF7FFEBFEFFE30DDFE37E38E38DFAFFE<FC0FFFB004000408(?#E$8*<"<"g"E#C'
X222A222BE9FFAFFEBFFF7FDFFFFFFFFFF7FFFFFFFFDFFD03FE07FEE2222A223F(?#E$G"<"J#C'
X08000803B9FFDFFF7FFEBFEFAFFE<FF03FFB008000800(?#E$<"@"<YF"C'
X82928293E9FFAFFEBFFF7FDFFFDF81FEE282928288(?#E$G"J"C'
X08000803B9FFDFFF7FFEBFEFAFDC0FFB0080008004w&i"8"J#B'
X22222223E9FFAFFAAAAAAAAAAAAABFC7FEBFEAAABFC7FF7FD00FDFDE07FFEE2222222354w&G"J#B'
X10011003B9FFDFF55555555555553FC7FF7FD5553FC7FEBFE0AFDF83FFFB110011000)Q8$W8#Z8"J#B'
X88A888ABE9FFAFFBFEBFEFFF7F0DFDFFFFFEE088A888BF)>$D#H"J'
X00000003B9FFDFF7FF7FDFFEBFAFO$FFB00000001E)>$D#H"J"w":'
X22122213E9FFAFFBFEBFEFFF7FDF@D5557FFEE222122208)>$D#H"Jx;'
X08440847B9FFDFF7FF7FDFFEBFAF@AAFFB00844085F-:%8#9$9#H"J"V";'
XA100A103E9FFAFFBFFFC1763FEBFEC1FF77F8C10DDFF7FDF@DFFEFEE0A100A11E-:%=$9#H"J"G'
X0408040BB9FFDFF7FFFDF35DFF7FDF7D75FB5DFEBFAF@BFFFB00408041F)9":%8":";#H"J"G'
X20A220A3E9FFAFFB5FFEBFEF7FF27DFF7FDF@DFFEE220A220BF)8";+:"8$y"8"J"G'
X0A000A03B9FFDFF7F5FF7FDF79CB8FF5634E388FFEBFEAAAAFAF@BFFFB00A000A1F,;08$y"8"J%>";'
X8088808BE9FFAFFBFFFC35FEBFEF7DD577F55D35D77F8C3B5D77FF7FD5554FDF@DC7FFFFC3EFEE08088809F-:$8+8$Y"8"J%9":";'
X04000403B9FFDFF7FFFDF659FF7FDF07F7417DD07FF5FB5D9FFEBFEFCFAF@BBBFFFFEF7BEFFB00400041F)9":$8'9"8$G"J#:"A'
X222A222BE9FFAFFB5DFEBFEF7FF75F7DD7FFEFFF7FDFDF@DBFFBFFEE2222A223F)8";$8(8"8$G"J-<'
X08000803B9FFDFF7F7FF7FDF77F75D7E177F7577FEBFEFAF@BBE1C71EF1A71FE1961FF187FFB00800081F-:08$G"J-<'
X82928293E9FFAFFBFFFC1763FEBFEF78DD8FF7637FD8FF8DF0E38FFF7FDFDF@DC6EBAEEEE9BBFF7AAEFEEBBFEE28292829F-:$P#P8&;"?"J#8&v%
X08000803B9FFDFF7FFFFFFFFFF7FDFFDDFFEBFEC3063E7AF@BFAEE0BFFFF7AD555000081F)>$;#=.8#9"J"9"9w%
X22222223E9FFAFFBFEBFEFFE3FFF7FDEDDDDFFFDFFBFFFF7FFFDFDEFDF@DFEFAAA222223F)>$;#=(;"8":"J#8&v%
X10011003B9FFDFF7FF7FDFFFFFFEBFEEDDDFFFFFFFFFAF@BBA1EEBFBFF6AD554001101F)>$D$8-9"J*v%
X88A888ABE9FFAFFBFEBFEFFF7FDEFDD9D30DD8F7FE39D38DD9C3DF@DC6FC71C71BF1FF9BAAA80A888BF)a8$g829"J+U%
X00000003B9FFDFF4FF7FD0FEBFEEDDE3FDDDCDBDDF77FDDDCD75DDEFAF@BFEFFFFFFFFFBFFFFD7F8000001F)>$D&8$8$;"J";%@%
X22122213E9FFAFF8FEBFE0FF7FDEDDFDDFBDD8FDDF7DDF@DFFFFFFAFF8212221F(S$Y%8#8"@"J#<#@%
X08440847B9FFDFC7FF7FC7FEBFEEFEBDD7AF@BFFFFD7F8044085F(?#E&9#8&9"J"=#@%
XA100A103E9FFAFFEBFFF7FDEDDDDB597DDDF759DEDDF@DFFAFF8100A11F(?#E29"J"b$9#:%
X0408040BB9FFDFFF7FFEBFEC3DE3FF78DFCE5863FE38DF8E58F3AF@A00571BFFBBF8408041F(?#E$Y9"J"=#:";%
X20A220A3E9FFAFFEBFFF7FDFDF@C002EEF980A220BF(?#E$G"JS#@%
X0A000A03B9FFDFFF7FFEBFEFAF@FD6F82000A1F(?#E$G"J+8%
X8088808BE9FFAFFEBFFF7FDFDFHFAEFA71A71C7FAB1971F8088809F(?#E$G"J+8%
X04000403B9FFDFFF7FFEBFEFAFHFD6F9BE9AEBBFABEAAEF8400041F3E$i"8"J+8%
X222A222BE9FFAFFAAAAAAAAAAAAABFC7FEBFFF7FD00FDFHFAEFBB0BAE83FB30AA0F822A223F3E$G"J+8%
X08000803B9FFDFF55555555555553FC7FF7FFEBFE0AFHFD6FBAEBAEBFFB2EAAFF8000081F)Q8#E#Z8"J#8-
X82928293E9FFAFFBFEBFFF7F0DFHFAEEB0BBFBAEAAEEFBEF8292829F)>#E#H"J1
X08000803B9FFDFF7FF7FFEBFAFHFD71BB0BBEC7FBB0BB1C71C78000081F)>#E#H"J1
X22222223E9FFAFFBFEBFFF7FDFHFAFFFFFFEEFF3FFFFFFEFBEF8222223F)>#E#H"J#8#9(
X10011003B9FFDFF7FF7FFEBFAFHFD7FF1FCFFFFFF8001101F-:#E#H"J#8$<$
X88A888ABE9FFAFFBFFFE3043FEBFFF7FDFHFAFFFFF07FA888BF-:#E#H"J#9"=$
X00000003B9FFDFF7FFFDD7EDFF7FFEBFAFHFD7FC000001F)8";#E#H"J(`%
X22122213E9FFAFFBF7FEBFFF7FDFHFA8000000300800212221F)>#E#H"J#8"=%
X08440847B9FFDFF7FF7FFEBFAFHFD00040044085F,;#E#H"J"9$;%
XA100A103E9FFAFFBFFFE30FEBFFF7FDFHFA07C1000100A11F,;#E#H"J1
X0408040BB9FFDFF7FFFFD7FF7FFEBFAFHFCAAAAAAAA81AAAAAAAAAAAAA408041F)>#E#H"J'Q%
X20A220A3E9FFAFFBFEBFFF7FDFHFBFFFFFFFF13E0A220B1+<#E#H"J"9#<%
X0A000A03B9FFDFF7FFFDFF7FFEBFAFHFDFE33E2000A11-:#E#H"J"9#<%
X8088808BE9FFAFFBFFFE3043FEBFFF7FDFHFBFC77E0888091-:#E#H"J"9#<%
X04000403B9FFDFF7FFFFFFFFFF7FFEBFAFHFDF8F7E4000411)>#E#H"J"9#<%
X222A222BE9FFAFFBFEBFFF7FDFHFBF1FFE22A2231)>#E#H"J"9"=%
X08000803B9FFDFF7FF7FFEBFAFHFDFBE000081F)>#E#H"J#8"=%
X82928293E9FFAFFBFEBFFF7FDFHFBE1FFE292829F)a8#E#H"J$;"9%
X08000803B9FFDFF4FF7FFEBFAFHFDF6EFDFE0000800)>#E#H"J$?%
X22222223E9FFAFF8FEBFFF7FDFHFBF6FFE222223F(S$E#H"J*9%
X10011003B9FFDFC7FF7FFEBFAFHFDF6CF1C71A69C7187E0011000(?#E#H"J*:$
X88A888ABE9FFAFFEBFFF7FDFHFBF6EEEBAE9A6BAEDFA888A0(?#E#H"J);$
X00000003B9FFDFFF7FFEBFAFHFDF6EF3BEEBAE82F000000(?#E#H"J"8"8#:%
X22122213E9FFAFFEBFFF7FDFHFBDBEBEFE212220C(?#E#H"J&8#9%
X08440847B9FFDFFF7FFEBFAFHFDF6EEEBAEAEDBE044084E(?#E#H"J*9%
XA100A103E9FFAFFEBFFF7FDFHFBE1C71C71BAEC71E7E100A113(?#E#H"J"S9%
X0408040BB9FFDFFF7FFEBFAFHFDE4080400(?#E#H"J"A%
X20A220A3E9FFAFFEBFFF7FDFHFBE0A220BF(c$i$j$j"A%
X0A000A03B9FFD007FF4007FE80001FFA0H05E2000A1F(?#E#H"J"A%
X8088808BE9FFA0FE80FF00C0H03E088809F(?#E"I"J"A%
X04000403B9FFC0FF00FE80H05E400041F&Z"A%
X222A222BE9OKFBE22A2220&J"A%
X08000803B9OKFDE000081F&J"A%
X82928293E9OKFBE2928295&J"A%
X08000803B9OKFDE000081F&J"A%
X22222223E9OKFBE2222220&J"A%
X10011003B9OKFDE0011015&J"B$
X88A888ABE9OKFBA888BF&J#A$
X00000003B9OKFDE100001F&J%>%
X22122213E9OKFBF6FFFDE2122208&J"A%
X08440847B9OKFDE044085F&j(;%
XA100A103E8OK03F6C71869C6EFE100A100&Z'<%
X0408040BB8OKFDF6BAEDE6BAE4080408&J&=%
X20A220A3E8OKFBF6833DEFE0A220A0&J%8";%
X0A000A03B8OKFDF6BFDDCFE2000A15&J(;%
X8088808BE8OKFBF6BAEDAFBB2FE0888080&J(;%
X04000403B8OKFDE1C71E6FC7EFE400041F&J'<%
X222A222BE8OKFBFFFFFFFFFEE22A223E&J":#;%
X08000803B8OKFDFF1FE0000808&J";";%
X82928293E8OKFBFFE292829F&J"A%
X08000803B8OKFDE000081E&J"A%
X22222223E8OKFBE222223F&J"A%
X10011003B8OKFDE001101F&J"g$
X88A888ABE8OKFAA888BF&J"B$
X00000003B8OKFC00001F&JU'
X22122213E8OKF6E22212221F&J'
X08440847B8P'F7B00844085F&J'
XA100A103E8P'F6E0A100A11F&J'
X0408040BB8P'F7B00408041F&J'
X20A220A3E8P'F6E220A220BF&J'
X0A000A03B8P'F7B00A000A1F&J'
X8088808BE8P'F6E08088809F&J'
X04000403B8P'F7B00400041F&J'
X222A222BE8P'F6E2222A223F&J'
X08000803B8P'F7B00800081F&J'
X82928293E8P'F6E28292829F&J'
X08000803B8P'F7B00800081F&J'
X22222223E8P'F6E22222223F&J'
X10011003B8P'F7B11001101F&J'
X88A888ABE8P'F6E088A888BF&J'
X00000003B8P'F7B00000001F&J'
X22122213E8P'F6E22212221F&J'
X08440847B8P'F7B00844085F&J'
XA100A103E8P'F6E0A100A11F&J'
X0408040BB8P'F7B00408041F&J'
X20A220A3E8P'F6E220A220BF&J'
X0A000A03B8P'F7B00A000A1F&J'
X8088808BE8P'F6E08088809F&J'
X04000403B8P'F7B00400041F&J'
X222A222BE8P'F6E2222A223F&J'
X08000803B8P'F7B00800081F&J'
X82928293E8P'F6E28292829F&J'
X08000803B8P'F7B00800081F&J'
X22222223E8P'F6E22222223F&J'
X10011003B8P'F7B110011011&J'
X88A888ABE8P'F6E088A888B1&J'
X00000003B8P'F7B000000011&J'
X22122213E8P'F6E222122211&J'
X08440847B8P'F7B008440851&J'
XA100A103E8P'F6E0A100A11F&J'
X0408040BB8P'F7B00408041F&J'
X20A220A3E8P'F6E220A220A0&J'
X0A000A03B8P'F7B00A000A1F&J'
X8088808BE8P'F6E080888080&J'
X04000403B8P'F7B004000400&J'
X222A222BE8P'F6E2222A2220&J'
X08000803B8P'F7B00800080C&J'
X82928293E8P'F6E28292828E&J'
X08000803B8P'F7B008000813&J'
X22222223E8P'F6E222222220&J'
X10011003B8P'F7B11001101F&J'
X88A888ABE8P'F6E088A888BF&J'
X00000003B8P'F7B00000001F&J'
X22122213E8P'F6E22212221F&J'
X08440847B8P'F7B008440840&J'
XA100A103E8P'F6E0A100A11F&J'
X0408040BB8P'F7B004080415&J'
X20A220A3E8P'F6E220A220BF&J&
X0A000A0200P(000A000A00&J'
X8088808BFCP'F7F880888095&J&
X04000403B8P(B00400041F&J'
X222A222BE8P'F6E2222A223F&J'
X08000803B8P'F7B008000808&J'
X82928293E8P'F6E28292829F&J'
X08000803B8P'F7B008000800&J'
X22222223E8P'F6E222222228&J'
X10011003B8P'F7B110011000&J'
X88A888ABE8P'F6E088A888B5&J'
X00000003B8P'F7B000000000&J'
X22122213E8P'F6E22212221F&J'
X08440847B8P'F7B00844085E&J'
XA100A103E8P'F6E0A100A108&J'
X0408040BB8P'F7B00408041F&J'
X20A220A3E8P'F6E220A220BE&j'
X0A000A03B8P'07B00A000A1F&Z'
X8088808BE9P'FEE08088809F&J'
X04000403BBP'FFB00400041F(z)
X222A222BEEEEEDP#EEE6EEEEE2222A223F(z)
X08000803BBBBB9P#BBB7BBBBB00800081F(z)
X82928293EEEEEDP#EEE6EEEEE28292829F(z)
X08000803BBBBB9P#BBB7BBBBB00800081F(z)
X22222223EEEEEDP#EEE6EEEEE22222223F(j)
X10011003000001P#040000011001101F%8"J"8&
X88A888AA00P#000088A888BF%J%
X00000000P*0000001F5
XP2221222122212221222122212221222122212221222122212221222122212221222122212221222122212221222122212221222122212221222122212221222122212221222122212221222122212221222122212221222122212221222122212221222122212221222122212221F5
XP2084408440844084408440844084408440844084408440844084408440844084408440844084408440844084408440844084408440844084408440844084408440844084408440844084408440844084408440844084408440844084408440844084408440844084408440844085F5
XP2A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A11F5
XP2040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408041F5
XP220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220BF5
XP20A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A1F5
XP2808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088809F5
XP2040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400041F5
XP2222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A223F5
XP2080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800081F5
XP2829282928292829282928292829282928292829282928292829282928292829282928292829282928292829282928292829282928292829282928292829282928292829282928292829282928292829282928292829282928292829282928292829282928292829282928292829F5
XP2080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800081Fz"
XP1223F5
XP2100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001101F5
XP288A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888A888BFj"
XP11F5
XP2221222122212221222122212221222122212221222122212221222122212221222122212221222122212221222122212221222122212221222122212221222122212221222122212221222122212221222122212221222122212221222122212221222122212221222122212221F5
XP2084408440844084408440844084408440844084408440844084408440844084408440844084408440844084408440844084408440844084408440844084408440844084408440844084408440844084408440844084408440844084408440844084408440844084408440844085F5
XP2A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A100A11F5
XP2040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408040804080408041F5
XP220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220A220BF5
XP20A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A000A1F5
XP280888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880888088808880915
XP204000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004115
XP2222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A222A22315
XP208000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008115
XP282928292829282928292829282928292829282928292829282928292829282928292829282928292829282928292829282928292829282928292829282928292829282928292829282928292829282928292829282928292829282928292829282928292829282928292829282915
XP2080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800080008000800081F
XENDBITMAP
X
X%%EndBinary
XU
XFMENDPAGE
X%%Page: "4" 4
XFMBEGINPAGE
X72. 531. 630. 531. 2 L
X3 H
X0 X
XN
X678. 542. 687. 549. R
XV
X7 X
X90. 450. 3. 3.5 684. 545.5 G
X675. 542. 684. 549. R
XV
X633. 529. 640. 535. 654. 535. 654. 556. 660. 556. 660. 535. 654. 529. 7 Y
X0 X
XV
X0 H
XN
X270. 360. 6.5 6.5 653.5 535.5 G
X270. 270.1 6.5 -6.5 647. 529. A
X270. 0. -6.5 -6.5 660. 529. A
X723. 529. 717. 535. 703. 535. 703. 556. 696. 556. 696. 535. 703. 529. 7 Y
XV
XN
X180. 270. 7. 6.5 703. 535.5 G
X180. 180.1 7. 6.5 696. 542. A
X180. 270. 7. -6.5 696. 529. A
X669. 556. 669. 529. 663. 529. 663. 556. 4 Y
XV
XN
X669. 542. 676. 535. 687. 535. 694. 542. 694. 549. 687. 556. 669. 556.
X 669. 549. 687. 549. 687. 542. 10 Y
XV
XN
X0. 90. 6.5 7. 687.5 549. G
X0. 90. -6.5 7. 694. 556. A
X270. 360. 6.5 7. 687.5 542. G
X270. 270.1 6.5 -7. 681. 535. A
X270. 0. -6.5 -7. 694. 535. A
X0 F
X(D.E.Smyth, December 1990) 72. 54. T
X(II.4) 703.01 54. T
X1 F
X(The Application Provides Objects   ) 72. 486. T
X72. 90. 720. 504. C
XU
X72. 90. 720. 504. C
X72. 90. 719. 480. C
X187. 293. 214. 329. 214. 311. 241. 311. 241. 329. 268. 293. 241. 257.
X 241. 275. 214. 275. 214. 257. 10 Y
X3 X
XV
X1 H
X0 X
XN
X7 X
X90. 450. 58.5 157.5 359.5 292.5 G
X0 X
X90. 90.1 -58.5 157.5 418. 450. A
X90. 180.1 58.5 157.5 301. 450. A
X180. 270.1 58.5 -157.5 301. 135. A
X270. 0.1 -58.5 -157.5 418. 135. A
X0. 90. -58.5 157.5 418. 450. A
X346. 153. 364. 216. R
X5 X
XV
X0 X
XN
X347. 396. 364. 432. R
X5 X
XV
X0 X
XN
X344. 342. 400. 378. R
X5 X
XV
X0 X
XN
X373. 279. 403. 315. R
X5 X
XV
X0 X
XN
X319. 279. 337. 342. R
X5 X
XV
X0 X
XN
X373. 198. 400. 252. R
X5 X
XV
X0 X
XN
X319. 216. 337. 252. R
X5 X
XV
X0 X
XN
X1 F
X(Widgets) 315. 108. T
X7 X
X90. 450. 17.5 47.5 135.5 292.5 G
X0 X
X90. 90.1 -17.5 47.5 153. 340. A
X90. 180.1 17.5 47.5 118. 340. A
X180. 270.1 17.5 -47.5 118. 245. A
X270. 0.1 -17.5 -47.5 153. 245. A
X0. 90. -17.5 47.5 153. 340. A
X131. 250. 137. 269. R
X5 X
XV
X0 X
XN
X132. 324. 137. 335. R
X5 X
XV
X0 X
XN
X131. 307. 148. 318. R
X5 X
XV
X0 X
XN
X140. 288. 149. 299. R
X5 X
XV
X0 X
XN
X123. 288. 129. 307. R
X5 X
XV
X0 X
XN
X140. 264. 148. 280. R
X5 X
XV
X0 X
XN
X123. 269. 129. 280. R
X5 X
XV
X0 X
XN
X(Problem) 89. 219. T
X(Domain) 92. 195. T
X(1:1) 211. 284. T
X7 X
X90. 450. 58.5 157.5 626.5 292.5 G
X0 X
X90. 90.1 -58.5 157.5 685. 450. A
X90. 180.1 58.5 157.5 568. 450. A
X180. 270.1 58.5 -157.5 568. 135. A
X270. 0.1 -58.5 -157.5 685. 135. A
X0. 90. -58.5 157.5 685. 450. A
X613. 153. 631. 216. R
X5 X
XV
X0 X
XN
X614. 396. 631. 432. R
X5 X
XV
X0 X
XN
X611. 342. 667. 378. R
X5 X
XV
X0 X
XN
X640. 279. 670. 315. R
X5 X
XV
X0 X
XN
X586. 279. 604. 342. R
X5 X
XV
X0 X
XN
X640. 198. 667. 252. R
X5 X
XV
X0 X
XN
X586. 216. 604. 252. R
X5 X
XV
X0 X
XN
X(Objects) 585. 108. T
X452. 293. 479. 329. 479. 311. 506. 311. 506. 329. 533. 293. 506. 257.
X 506. 275. 479. 275. 479. 257. 10 Y
X3 X
XV
X0 X
XN
X(1:1) 476. 285. T
X72. 90. 720. 504. C
XU
XFMENDPAGE
X%%Page: "3" 3
XFMBEGINPAGE
X72. 531. 630. 531. 2 L
X3 H
X0 X
XN
X678. 542. 687. 549. R
XV
X7 X
X90. 450. 3. 3.5 684. 545.5 G
X675. 542. 684. 549. R
XV
X633. 529. 640. 535. 654. 535. 654. 556. 660. 556. 660. 535. 654. 529. 7 Y
X0 X
XV
X0 H
XN
X270. 360. 6.5 6.5 653.5 535.5 G
X270. 270.1 6.5 -6.5 647. 529. A
X270. 0. -6.5 -6.5 660. 529. A
X723. 529. 717. 535. 703. 535. 703. 556. 696. 556. 696. 535. 703. 529. 7 Y
XV
XN
X180. 270. 7. 6.5 703. 535.5 G
X180. 180.1 7. 6.5 696. 542. A
X180. 270. 7. -6.5 696. 529. A
X669. 556. 669. 529. 663. 529. 663. 556. 4 Y
XV
XN
X669. 542. 676. 535. 687. 535. 694. 542. 694. 549. 687. 556. 669. 556.
X 669. 549. 687. 549. 687. 542. 10 Y
XV
XN
X0. 90. 6.5 7. 687.5 549. G
X0. 90. -6.5 7. 694. 556. A
X270. 360. 6.5 7. 687.5 542. G
X270. 270.1 6.5 -7. 681. 535. A
X270. 0. -6.5 -7. 694. 535. A
X0 F
X(D.E.Smyth, December 1990) 72. 54. T
X(II.3) 703.01 54. T
X1 F
X(The Widgets Represent the Problem Domain  ) 72. 486. T
X72. 90. 720. 504. C
XU
X72. 90. 720. 504. C
X72. 90. 719. 480. C
X342. 293. 369. 329. 369. 311. 396. 311. 396. 329. 423. 293. 396. 257.
X 396. 275. 369. 275. 369. 257. 10 Y
X3 X
XV
X1 H
X0 X
XN
X7 X
X90. 450. 58.5 157.5 494.5 292.5 G
X0 X
X90. 90.1 -58.5 157.5 553. 450. A
X90. 180.1 58.5 157.5 436. 450. A
X180. 270.1 58.5 -157.5 436. 135. A
X270. 0.1 -58.5 -157.5 553. 135. A
X0. 90. -58.5 157.5 553. 450. A
X481. 153. 499. 216. R
X5 X
XV
X0 X
XN
X482. 396. 499. 432. R
X5 X
XV
X0 X
XN
X479. 342. 535. 378. R
X5 X
XV
X0 X
XN
X508. 279. 538. 315. R
X5 X
XV
X0 X
XN
X454. 279. 472. 342. R
X5 X
XV
X0 X
XN
X508. 198. 535. 252. R
X5 X
XV
X0 X
XN
X454. 216. 472. 252. R
X5 X
XV
X0 X
XN
X1 F
X(Widgets) 450. 108. T
X7 X
X90. 450. 17.5 47.5 314.5 290.5 G
X0 X
X90. 90.1 -17.5 47.5 332. 338. A
X90. 180.1 17.5 47.5 297. 338. A
X180. 270.1 17.5 -47.5 297. 243. A
X270. 0.1 -17.5 -47.5 332. 243. A
X0. 90. -17.5 47.5 332. 338. A
X310. 248. 316. 267. R
X5 X
XV
X0 X
XN
X311. 322. 316. 333. R
X5 X
XV
X0 X
XN
X310. 305. 327. 316. R
X5 X
XV
X0 X
XN
X319. 286. 328. 297. R
X5 X
XV
X0 X
XN
X302. 286. 308. 305. R
X5 X
XV
X0 X
XN
X319. 262. 327. 278. R
X5 X
XV
X0 X
XN
X302. 267. 308. 278. R
X5 X
XV
X0 X
XN
X(Problem) 269. 216. T
X(Domain) 272. 192. T
X(1:1) 366. 284. T
X72. 90. 720. 504. C
XU
XFMENDPAGE
X%%Page: "2" 2
XFMBEGINPAGE
X72. 531. 630. 531. 2 L
X3 H
X0 X
XN
X678. 542. 687. 549. R
XV
X7 X
X90. 450. 3. 3.5 684. 545.5 G
X675. 542. 684. 549. R
XV
X633. 529. 640. 535. 654. 535. 654. 556. 660. 556. 660. 535. 654. 529. 7 Y
X0 X
XV
X0 H
XN
X270. 360. 6.5 6.5 653.5 535.5 G
X270. 270.1 6.5 -6.5 647. 529. A
X270. 0. -6.5 -6.5 660. 529. A
X723. 529. 717. 535. 703. 535. 703. 556. 696. 556. 696. 535. 703. 529. 7 Y
XV
XN
X180. 270. 7. 6.5 703. 535.5 G
X180. 180.1 7. 6.5 696. 542. A
X180. 270. 7. -6.5 696. 529. A
X669. 556. 669. 529. 663. 529. 663. 556. 4 Y
XV
XN
X669. 542. 676. 535. 687. 535. 694. 542. 694. 549. 687. 556. 669. 556.
X 669. 549. 687. 549. 687. 542. 10 Y
XV
XN
X0. 90. 6.5 7. 687.5 549. G
X0. 90. -6.5 7. 694. 556. A
X270. 360. 6.5 7. 687.5 542. G
X270. 270.1 6.5 -7. 681. 535. A
X270. 0. -6.5 -7. 694. 535. A
X0 F
X(D.E.Smyth, December 1990) 72. 54. T
X(II.2) 703.01 54. T
X1 F
X(The User Understands the Problem Domain) 72. 486. T
X72. 90. 720. 504. C
XU
X72. 90. 720. 504. C
X72. 90. 719. 480. C
X3 X
X90. 450. 45. 45. 393. 236. G
X438. 218. 393. 236. 438. 191. 3 Y
X7 X
XV
X0 X
X0. 90. 18. 9. 402. 245. G
X0 H
X0. 90. -18. 9. 420. 254. A
X1 F
X(User) 366. 165. T
X7 X
X90. 450. 17.5 47.5 424.5 363.5 G
X1 H
X0 X
X90. 90.1 -17.5 47.5 442. 411. A
X90. 180.1 17.5 47.5 407. 411. A
X180. 270.1 17.5 -47.5 407. 316. A
X270. 0.1 -17.5 -47.5 442. 316. A
X0. 90. -17.5 47.5 442. 411. A
X420. 321. 426. 340. R
X5 X
XV
X0 X
XN
X421. 395. 426. 406. R
X5 X
XV
X0 X
XN
X420. 378. 437. 389. R
X5 X
XV
X0 X
XN
X429. 359. 438. 370. R
X5 X
XV
X0 X
XN
X412. 359. 418. 378. R
X5 X
XV
X0 X
XN
X429. 335. 437. 351. R
X5 X
XV
X0 X
XN
X412. 340. 418. 351. R
X5 X
XV
X0 X
XN
X0 H
X90. 90.1 -4.5 4.5 398. 294. A
X90. 180.1 4.5 4.5 389. 294. A
X180. 270.1 4.5 -4.5 389. 285. A
X270. 0.1 -4.5 -4.5 398. 285. A
X0. 90. -4.5 4.5 398. 294. A
X90. 90.1 -9. 9. 389. 312. A
X90. 180.1 9. 9. 371. 312. A
X180. 270.1 9. -9. 371. 294. A
X270. 0.1 -9. -9. 389. 294. A
X0. 90. -9. 9. 389. 312. A
X90. 90.1 -13.5 13.5 407. 339. A
X90. 180.1 13.5 13.5 380. 339. A
X180. 270.1 13.5 -13.5 380. 312. A
X270. 0.1 -13.5 -13.5 407. 312. A
X0. 90. -13.5 13.5 407. 339. A
X72. 90. 720. 504. C
XU
XFMENDPAGE
X%%Page: "1" 1
XFMBEGINPAGE
X72. 531. 630. 531. 2 L
X3 H
X0 X
XN
X678. 542. 687. 549. R
XV
X7 X
X90. 450. 3. 3.5 684. 545.5 G
X675. 542. 684. 549. R
XV
X633. 529. 640. 535. 654. 535. 654. 556. 660. 556. 660. 535. 654. 529. 7 Y
X0 X
XV
X0 H
XN
X270. 360. 6.5 6.5 653.5 535.5 G
X270. 270.1 6.5 -6.5 647. 529. A
X270. 0. -6.5 -6.5 660. 529. A
X723. 529. 717. 535. 703. 535. 703. 556. 696. 556. 696. 535. 703. 529. 7 Y
XV
XN
X180. 270. 7. 6.5 703. 535.5 G
X180. 180.1 7. 6.5 696. 542. A
X180. 270. 7. -6.5 696. 529. A
X669. 556. 669. 529. 663. 529. 663. 556. 4 Y
XV
XN
X669. 542. 676. 535. 687. 535. 694. 542. 694. 549. 687. 556. 669. 556.
X 669. 549. 687. 549. 687. 542. 10 Y
XV
XN
X0. 90. 6.5 7. 687.5 549. G
X0. 90. -6.5 7. 694. 556. A
X270. 360. 6.5 7. 687.5 542. G
X270. 270.1 6.5 -7. 681. 535. A
X270. 0. -6.5 -7. 694. 535. A
X0 F
X(D.E.Smyth, December 1990) 72. 54. T
X(II.1) 703.01 54. T
X1 F
X(Guiding Principles of GUI Applications:) 72. 486. T
X(The User is in Control ) 276.64 370. T
X276.64 365.71 515.37 367.46 R
XV
X72. 90. 720. 504. C
XU
X72. 90. 720. 504. C
X72. 184. 719. 364. C
X3 X
X90. 450. 45. 45. 395. 272. G
X440. 254. 395. 272. 440. 227. 3 Y
X7 X
XV
X0 X
X0. 90. 18. 9. 404. 281. G
X0 H
X0. 90. -18. 9. 422. 290. A
X1 F
X(User) 369. 201. T
X72. 90. 720. 504. C
XU
XFMENDPAGE
X%%Trailer
X%%Pages: 12 -1
X%%DocumentFonts: Times-Roman
X%%+ Helvetica-Oblique
X%%+ Helvetica-Bold
!STUFFY!FUNK!
echo Extracting Wc/WcReg.c
sed >Wc/WcReg.c <<'!STUFFY!FUNK!' -e 's/X//'
X/*
X** Copyright (c) 1990 David E. Smyth
X**
X** This file was derived from work performed by Martin Brunecky at
X** Auto-trol Technology Corporation, Denver, Colorado, under the
X** following copyright:
X**
X*******************************************************************************
X* Copyright 1990 by Auto-trol Technology Corporation, Denver, Colorado.
X*
X*                        All Rights Reserved
X*
X* Permission to use, copy, modify, and distribute this software and its
X* documentation for any purpose and without fee is hereby granted, provided
X* that the above copyright notice appears on all copies and that both the
X* copyright and this permission notice appear in supporting documentation
X* and that the name of Auto-trol not be used in advertising or publicity
X* pertaining to distribution of the software without specific, prior written
X* permission.
X*
X* Auto-trol disclaims all warranties with regard to this software, including
X* all implied warranties of merchantability and fitness, in no event shall
X* Auto-trol be liable for any special, indirect or consequential damages or
X* any damages whatsoever resulting from loss of use, data or profits, whether
X* in an action of contract, negligence or other tortious action, arising out
X* of or in connection with the use or performance of this software.
X*******************************************************************************
X**
X** Redistribution and use in source and binary forms are permitted
X** provided that the above copyright notice and this paragraph are
X** duplicated in all such forms and that any documentation, advertising
X** materials, and other materials related to such distribution and use
X** acknowledge that the software was developed by David E. Smyth.  The
X** name of David E. Smyth may not be used to endorse or promote products
X** derived from this software without specific prior written permission.
X** THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
X** WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
X** MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
X**
X*/
X
X/*
X* SCCS_data: @(#)WcReg.c 1.1 ( 19 Nov 90 )
X*
X* Subsystem_group:
X*
X*     Widget Creation Library
X*
X* Module_description:
X*
X*     Since (for portability reasons) we can not assume runtime binding,
X*     all widget classes, creation routines (constructors), and callbacks
X*     must be "registered"  by the application BEFORE widget tree creation.
X*
X*     All four of the functions defined in this module load dynamically
X*     allocated and extended arrays of structures.  The size increment
X*     of the arrays starts at a reasonably small size (INCR_REGISTRY,
X*     initially 32), and is doubled in size everytime a given registry is
X*     filled.  This allows registries to be small, yet to not have to be
X*     realloc'd frequently when they grow large.  
X*
X*     The registries are arrays of structs.  In all four cases, the
X*     structs are very similar: they contain a name string which holds the
X*     class, constructor, or callback name as it was registered; a quark
X*     which is based on an all lower case representation of the name, and
X*     class, constructor, or callback specific information.  The name
X*     as registered should be as shown in reference documents and source
X*     code, as it is used for user error messages.
X*
X*     The registries are intended to be used by string-to-whatever converters.
X*
X*     All four registration functions currently check for duplicate
X*     entries, but do no fancy hashing scheme, nor any ties to the
X*     application context.  Assumming a relatively small number of
X*     entries in these regestries, it is assumed that a sequential
X*     search using quarks will be adequate and simple.
X
X* Module_interface_summary: 
X*
X*       WcRegisterClassPtr(
X*	    XtAppContext  app,	    - application context
X*	    String	  name,	    - class ptr name, as in ref manuals
X*	    WidgetClass   class )   - class record pointer
X*
X*       WcRegisterClassName(
X*	    XtAppContext  app,	    - application context
X*	    String	  name,	    - class name, as in ref manuals
X*	    WidgetClass   class )   - class record pointer
X*
X*       WcRegisterConstructor(
X*	    XtAppContext  app,	    - application context
X*	    String	  name,	    - constructor name, as in ref manuals
X*	    (*Widget)()   const )   - constructor function pointer
X*
X*	WcRegisterCallback(
X*	    XtAppContext  app,      - application context
X*           String        name,     - callback name, "nice" capitalization
X*	    void (*func)() )        - pointer to callback function
X*
X*	WcRegisterAction(
X*	    XtAppContext  app,      - application context
X*           String        name,     - action name
X*	    XtActionProc  proc )    - action proc
X
X*	WcAllowDuplicateRegistration   ( int allowed )
X*	WcAllowDuplicateClassPtrReg    ( int allowed )
X*	WcAllowDuplicateClassNameReg   ( int allowed )
X*	WcAllowDuplicateConstructorReg ( int allowed )
X*	WcAllowDuplicateCallbackReg    ( int allowed )
X*
X* Module_history:
X
X*   mm/dd/yy  initials  function  action
X*   --------  --------  --------  ---------------------------------------------
X*   16Jul90   D.Smyth   Added WcAllowDuplicate*()
X*   19Jun90   D.Smyth   Version 1.0 Widget Creation Library
X*   06/08/90  D.Smyth   All Added "name" member for better user msgs.
X*   02/26/90  MarBru    All       Created
X*   02/16/90  MarBru    Create..  Limited creation to composite widgets/objects
X*
X* Design_notes:
X*
X*   For VMS, we could have used LIB$FIND_IMAGE_SYMBOL and use dynamic
X*   (runtime) binding. But since most UNIX systems lack such capability,
X*   we stick to the concept of "registration" routines.
X*
X*******************************************************************************
X*/
X/*
X*******************************************************************************
X* Include_files.
X*******************************************************************************
X*/
X
X/*  -- X Window System Includes */
X#include <X11/Intrinsic.h>
X
X/*  -- Widget Creation Includes */
X#include "WcCreate.h"
X#include "WcCreateP.h"
X
X/*
X*******************************************************************************
X* Private_data_definitions.
X*******************************************************************************
X    The following cache/registry of known widget classes, contructors, 
X    and callbacks are initially empty, and are loaded by the application 
X    using "registration" routines.
X*/
X
Xstatic char     msg[MAX_ERRMSG];
X
Xstatic int allowDuplicateClassPtrReg    = FALSE;
Xstatic int allowDuplicateClassNameReg   = FALSE;
Xstatic int allowDuplicateConstructorReg = FALSE;
Xstatic int allowDuplicateCallbackReg    = FALSE;
X
X/*  -- Named class pointer cache, intially empty */
X
Xint         classes_num = 0;
Xint         classes_max = 0;
XClCacheRec *classes_ptr = NULL;
X
X/*  -- Class name cache, intially empty */
X
Xint             cl_nm_num = 0;
Xint             cl_nm_max = 0;
XClNameCacheRec* cl_nm_ptr = NULL;
X
X/*  -- Named object constructor cache, intially empty */
X
Xint          constrs_num = 0;
Xint          constrs_max = 0;
XConCacheRec *constrs_ptr = NULL;
X
X/*  -- Named callback procedures cache, intially empty */
X
Xint         callbacks_num = 0;
Xint         callbacks_max = 0;
XCBCacheRec *callbacks_ptr = NULL;
X
X/*
X*******************************************************************************
X* Private_function_declarations.
X*******************************************************************************
X*/
X
X/*
X*******************************************************************************
X* Public_function_declarations.
X*******************************************************************************
X*/
X
X/*
X    -- Allow or Disallow Duplicate Registrations
X*******************************************************************************
X    By default, the Widget Creation Library does not allow a
X    string-to-callback, string-to-class, etc bindings to be re-defined.
X    Some applications, most noticably user interface builders, need to be
X    able to change these bindings in order to provide additional
X    flexibility.  Therefore the following functions are provided.  The
X    typical user interface builder will make this single call:
X
X	WcAllowDuplicateRegistration( TRUE );
X
X    which allows class pointers, class names, constructors, and callbacks
X    to be changed during execution.
X*/
X
Xvoid WcAllowDuplicateRegistration( allowed )
X    int allowed;
X{
X    allowDuplicateClassPtrReg = allowed;
X    allowDuplicateClassNameReg = allowed;
X    allowDuplicateConstructorReg = allowed;
X    allowDuplicateCallbackReg = allowed;
X}
Xvoid WcAllowDuplicateClassPtrReg( allowed )
X    int allowed;
X{
X    allowDuplicateClassPtrReg = allowed;
X}
Xvoid WcAllowDuplicateClassNameReg( allowed )
X    int allowed;
X{
X    allowDuplicateClassNameReg = allowed;
X}
Xvoid WcAllowDuplicateConstructorReg( allowed )
X    int allowed;
X{
X    allowDuplicateConstructorReg = allowed;
X}
Xvoid WcAllowDuplicateCallbackReg( allowed )
X    int allowed;
X{
X    allowDuplicateCallbackReg = allowed;
X}
X
X/*
X    -- Register Class Pointer Name
X*******************************************************************************
X    This procedure adds class pointer name to our list of registered
X    classes. Note that the class ptr name is effectively case insensitive
X    as it is being quarkified.  However, one should register the class ptr
X    names using the "standard" capitalization (whatever is in the reference
X    manual for the widget set) as the name as registered is used for error
X    messages.
X
X   The registry is primarily used by CvtStringToClassPtr().
X*/
X
Xvoid WcRegisterClassPtr ( app, name, class )
X    XtAppContext        app;    /* not used (yet), must be present      */
X    char*               name;   /* class ptr name, case insensitive     */
X    WidgetClass         class;  /* Xt object class pointer              */
X{
X    char          *lowerCaseName;
X    XrmQuark       quark;
X    ClCacheRec    *rec;
X    int            i;
X
X    /* Might need to grow cache.  Note that growth increment is exponential:
X    ** if lots of classes, don't need to keep realloc'ing so often.
X    */
X    if (classes_num >= classes_max )
X    {
X        classes_max += (classes_max ? classes_max : INCR_REGISTRY);
X        classes_ptr  = (ClCacheRec*) XtRealloc((char*)classes_ptr,
X                             sizeof(ClCacheRec) * classes_max);
X    }
X
X    /* See if this object has been registered.  Compare quarks.
X    */
X    lowerCaseName = WcLowerCaseCopy( name );
X    quark = XrmStringToQuark ( lowerCaseName );
X    XtFree ( lowerCaseName );
X
X    for (i = 0 ; i < classes_num ; i++ )
X    {
X        if (classes_ptr[i].quark == quark)
X        {
X            /* already registered this class */
X	    if ( allowDuplicateClassPtrReg )
X	    {
X		rec = &classes_ptr[i];	/* overwrite this ClCacheRec */
X		goto found_rec;
X	    }
X            sprintf(msg,
X            "WcRegisterClassPtr (%s) - Failed \n\
X             Problem: Duplicate class registration ignored.",
X             name );
X            XtWarning( msg );
X            return;
X        }
X    }
X
X    rec = &classes_ptr[classes_num++];	/* New ClCacheRec to be filled */
X
Xfound_rec:
X    rec->quark = quark;
X    rec->class = class;
X    rec->name  = XtMalloc( strlen(name) + 1 );
X    strcpy ( rec->name, name );
X}
X
X/*
X    -- Register Class Name
X*******************************************************************************
X    This procedure adds a class name to our list of registered
X    classes. Note that the class name is effectively case insensitive
X    as it is being quarkified.  However, one should register the class
X    names using the "standard" capitalization (whatever is in the reference
X    manual for the widget set) as the name as registered is used for error
X    messages.
X
X   The registry is primarily used by CvtStringToClassName().
X*/
X
Xvoid WcRegisterClassName ( app, name, class )
X    XtAppContext	app;	/* not used (yet), must be present      */
X    char*		name;	/* class name, case insensitive   	*/
X    WidgetClass		class;	/* Xt object class pointer              */
X{
X    char           *lowerCaseName;
X    XrmQuark	    quark;
X    ClNameCacheRec *rec;
X    int		    i;
X
X    /* Might need to grow cache.  Note that growth increment is exponential:
X    ** if lots of classes, don't need to keep realloc'ing so often.
X    */
X    if (cl_nm_num >= cl_nm_max )
X    {
X	cl_nm_max += (cl_nm_max ? cl_nm_max : INCR_REGISTRY);
X	cl_nm_ptr  = (ClNameCacheRec*) XtRealloc((char*)cl_nm_ptr, 
X                             sizeof(ClNameCacheRec) * cl_nm_max);
X    }
X
X    /* See if this object has been registered.  Compare quarks.
X    */
X    lowerCaseName = WcLowerCaseCopy( name );
X    quark = XrmStringToQuark ( lowerCaseName );
X    XtFree ( lowerCaseName );
X
X    for (i = 0 ; i < cl_nm_num ; i++ )
X    {
X	if (cl_nm_ptr[i].quark == quark)
X	{
X	    /* already registered this class */
X	    if ( allowDuplicateClassNameReg )
X	    {
X		rec = &cl_nm_ptr[i];	/* overwrite this ClNameCacheRec */
X		goto found_rec;
X	    }
X	    sprintf(msg, 
X            "WcRegisterClassName (%s) - Failed \n\
X             Problem: Duplicate class registration ignored.",
X             name );
X            XtWarning( msg );
X	    return;
X	}
X    }
X
X    rec = &cl_nm_ptr[cl_nm_num++];	/* New ClNameCacheRec to be filled */
X
Xfound_rec:
X    rec->quark = quark;
X    rec->class = class;
X    rec->name  = XtMalloc( strlen(name) + 1 );
X    strcpy ( rec->name, name );
X}
X
X/*
X    -- Register constructor
X*******************************************************************************
X    This procedure adds constructor procedure/name to our list of registered
X    constructors. Note that the name is effectively case insensitive
X    as it is being quarkified.  However, one should register the 
X    names using the "standard" capitalization (whatever is in the reference
X    manual for the widget set) as the name as registered is used for error
X    messages.
X
X    Note the constructor is a "Motif Style" widget creation routine,
X    commonly called a "confusion function."  
X
X   The registry is primarily used by CvtStringToConstructor().
X*/
X
Xvoid WcRegisterConstructor ( app, name, constructor )
X    XtAppContext app;	        /* not used (yet), must be present      */
X    char*        name;	        /* constructor name, case insensitive   */
X    Widget (*constructor) ();   /* pointer to a widget creation routine */
X{
X    char          *lowerCaseName;
X    XrmQuark       quark;
X    ConCacheRec   *rec;
X    int		   i;
X
X    /* Might need to grow cache.  Note that growth increment is exponential:
X    ** if lots of constructors, don't need to keep realloc'ing so often.
X    */
X    if (constrs_num >= constrs_max )
X    {
X        constrs_max += (constrs_max ? constrs_max : INCR_REGISTRY);
X        constrs_ptr  = (ConCacheRec*) XtRealloc((char*)constrs_ptr,
X                             sizeof(ConCacheRec) * constrs_max);
X    }
X
X    /* See if this object has been registered.  Compare quarks.
X    */
X    lowerCaseName = WcLowerCaseCopy( name );
X    quark = XrmStringToQuark ( lowerCaseName );
X    XtFree ( lowerCaseName );
X
X    for (i = 0 ; i < constrs_num ; i++ )
X    {
X        if (constrs_ptr[i].quark == quark)
X        {
X            /* already registered this class */
X	    if ( allowDuplicateConstructorReg )
X	    {
X		rec = &constrs_ptr[i];	/* overwrite this ConCacheRec */
X		goto found_rec;
X	    }
X            sprintf(msg,
X            "WcRegisterConstructor (%s) - Failed \n\
X             Problem: Duplicate constructor registration ignored.",
X             name );
X            XtWarning( msg );
X            return;
X        }
X    }
X
X    rec = &constrs_ptr[constrs_num++];	/* New ClCacheRec to be filled */
X
Xfound_rec:
X    rec->quark       = quark;
X    rec->constructor = constructor;
X    rec->name        = XtMalloc( strlen(name) + 1 );
X    strcpy ( rec->name, name );
X}
X
X/*
X  -- Register Callbacks
X*******************************************************************************
X    Register callback functions which can then be bound to widget
X    callback lists by the string-to-callback converter 
X    CvtStringToCallback().
X*/
X
Xvoid WcRegisterCallback ( app, name, callback, closure )
X    XtAppContext    app;        /* not used (yet), must be present      */
X    String          name;       /* callback name, case insensitive      */
X    XtCallbackProc  callback;   /* callback function pointer            */
X    caddr_t	    closure;	/* default client data			*/
X{
X    char          *lowerCaseName;
X    XrmQuark       quark;
X    CBCacheRec    *rec;
X    int		   i;
X
X    /* Might need to grow cache.  Note that growth increment is exponential:
X    ** if lots of constructors, don't need to keep realloc'ing so often.
X    */
X    if (callbacks_num >= callbacks_max )
X    {
X        callbacks_max += (callbacks_max ? callbacks_max : INCR_REGISTRY);
X        callbacks_ptr  = (CBCacheRec*) XtRealloc((char*)callbacks_ptr,
X                             sizeof(CBCacheRec) * callbacks_max);
X    }
X
X    /* See if this callback has been registered.  Compare quarks.
X    */
X    lowerCaseName = WcLowerCaseCopy( name );
X    quark = XrmStringToQuark ( lowerCaseName );
X    XtFree ( lowerCaseName );
X
X    for (i = 0 ; i < callbacks_num ; i++ )
X    {
X        if (callbacks_ptr[i].quark == quark)
X        {
X            /* already registered this callback */
X	    if ( allowDuplicateCallbackReg )
X	    {
X		rec = &callbacks_ptr[i];	/* overwrite this CBCacheRec */
X		goto found_rec;
X	    }
X            sprintf(msg,
X            "WcRegisterCallback (%s) - Failed \n\
X             Problem: Duplicate callback registration ignored.",
X             name );
X            XtWarning( msg );
X            return;
X        }
X    }
X
X    rec = &callbacks_ptr[callbacks_num++];   /* New ClCacheRec to be filled */
X
Xfound_rec:
X    rec->quark    = quark;
X    rec->callback = callback;
X    rec->closure  = closure;
X    rec->name     = XtMalloc( strlen(name) + 1 );
X    strcpy ( rec->name, name );
X}
X
X/*
X  -- Register Actions
X*******************************************************************************
X    A simple wrapper around XtAppAddActions().
X    Register action procs which can then be bound to widget
X    actions using standard Xt mechanisms.
X*/
X
Xvoid WcRegisterAction(app, name, proc)
X    XtAppContext app;
X    String       name;
X    XtActionProc proc;
X{
X    static XtActionsRec action_rec[] = {
X        { (String)NULL, (XtActionProc)NULL }
X    };
X
X    action_rec[0].string = name;
X    action_rec[0].proc = proc;
X    XtAppAddActions(app, action_rec, 1);
X}
!STUFFY!FUNK!
echo Extracting test_mri
sed >test_mri <<'!STUFFY!FUNK!' -e 's/X//'
X#!/bin/csh
Xalias se setenv XENVIRONMENT
Xalias sa setenv XAPPLRESDIR
X
Xcd Mri
Xif (-e Mri) then
X    echo ============= Testing Mri =============
X    foreach example (M[0-9][0-9]_*)
X	se $example
X	Mri
X    end
Xendif
Xcd ..
!STUFFY!FUNK!
echo " "
echo "End of kit 26 (of 35)"
cat /dev/null >kit26isdone
run=''
config=''
for iskit in 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; do
    if test -f kit${iskit}isdone; then
	run="$run $iskit"
    else
	todo="$todo $iskit"
    fi
done
case $todo in
    '')
	echo "You have run all your kits.  Please read README."
	for combo in `find . -name '*:AA' -print`; do
	    if test -f "$combo"; then
		realfile=`echo $combo | sed 's/:AA$//'`
		cat $realfile:[A-Z][A-Z] >$realfile
		rm -rf $realfile:[A-Z][A-Z]
	    fi
	done
	rm -rf kit*isdone
	chmod ugo+x test*
	;;
    *)  echo "You have run$run."
	echo "You still need to run$todo."
	;;
esac
: Someone might mail this, so...
exit

--
dan
----------------------------------------------------
O'Reilly && Associates   argv@sun.com / argv@ora.com
Opinions expressed reflect those of the author only.