From b111a96ea19bde1004ecea63c7827a1d4b0b73ef Mon Sep 17 00:00:00 2001 From: Jason Molenda Date: Mon, 7 Feb 2000 00:19:28 +0000 Subject: import insight-2000-02-04 snapshot (2nd try) --- itcl/ChangeLog | 290 + itcl/INCOMPATIBLE | 102 + itcl/Makefile.in | 94 + itcl/TODO | 181 + itcl/aclocal.m4 | 524 + itcl/config/config.guess | 483 + itcl/config/config.sub | 793 ++ itcl/config/install-sh | 119 + itcl/config/mkinstalldirs | 32 + itcl/configure | 976 ++ itcl/configure.in | 37 + itcl/doc/README | 14 + itcl/itcl/doc/Resolvers.3 | 222 + itcl/itcl/doc/body.n | 124 + itcl/itcl/doc/class.n | 490 + itcl/itcl/doc/code.n | 96 + itcl/itcl/doc/configbody.n | 129 + itcl/itcl/doc/delete.n | 64 + itcl/itcl/doc/ensemble.n | 173 + itcl/itcl/doc/find.n | 62 + itcl/itcl/doc/itcl.n | 147 + itcl/itcl/doc/itcl_class.n | 419 + itcl/itcl/doc/itcl_info.n | 62 + itcl/itcl/doc/itclsh.1 | 30 + itcl/itcl/doc/itclvars.n | 96 + itcl/itcl/doc/license.terms | 27 + itcl/itcl/doc/local.n | 75 + itcl/itcl/doc/man.macros | 236 + itcl/itcl/doc/scope.n | 77 + itcl/itcl/generic/itcl.h | 188 + itcl/itcl/generic/itclInt.h | 535 + itcl/itcl/generic/itcl_bicmds.c | 1695 +++ itcl/itcl/generic/itcl_class.c | 1728 +++ itcl/itcl/generic/itcl_cmds.c | 1359 ++ itcl/itcl/generic/itcl_ensemble.c | 2248 ++++ itcl/itcl/generic/itcl_linkage.c | 327 + itcl/itcl/generic/itcl_methods.c | 2557 ++++ itcl/itcl/generic/itcl_migrate.c | 139 + itcl/itcl/generic/itcl_objects.c | 1202 ++ itcl/itcl/generic/itcl_obsolete.c | 1959 +++ itcl/itcl/generic/itcl_parse.c | 1086 ++ itcl/itcl/generic/itcl_util.c | 1383 ++ itcl/itcl/itclConfig.sh.in | 42 + itcl/itcl/library/itcl.tcl | 149 + itcl/itcl/license.terms | 38 + itcl/itcl/mac/itclMacApplication.r | 99 + itcl/itcl/mac/itclMacLibrary.r | 154 + itcl/itcl/mac/itclMacResource.r | 94 + itcl/itcl/mac/itclMacTclCode.r | 32 + itcl/itcl/mac/itclStaticApplication.r | 26 + itcl/itcl/mac/pkgIndex.tcl | 3 + itcl/itcl/mac/tclMacAppInit.c | 227 + itcl/itcl/tests/all | 16 + itcl/itcl/tests/basic.test | 319 + itcl/itcl/tests/body.test | 218 + itcl/itcl/tests/chain.test | 148 + itcl/itcl/tests/defs | 343 + itcl/itcl/tests/delete.test | 204 + itcl/itcl/tests/ensemble.test | 185 + itcl/itcl/tests/info.test | 384 + itcl/itcl/tests/inherit.test | 576 + itcl/itcl/tests/interp.test | 68 + itcl/itcl/tests/local.test | 66 + itcl/itcl/tests/methods.test | 128 + itcl/itcl/tests/mkindex.itcl | 88 + itcl/itcl/tests/mkindex.test | 44 + itcl/itcl/tests/namespace.test | 74 + itcl/itcl/tests/old/AAA.test | 82 + itcl/itcl/tests/old/Bar.tcl | 39 + itcl/itcl/tests/old/BarFoo.tcl | 31 + itcl/itcl/tests/old/Baz.tcl | 27 + itcl/itcl/tests/old/Foo.tcl | 99 + itcl/itcl/tests/old/FooBar.tcl | 31 + itcl/itcl/tests/old/Geek.tcl | 44 + itcl/itcl/tests/old/Mongrel.tcl | 34 + itcl/itcl/tests/old/VirtualErr.tcl | 23 + itcl/itcl/tests/old/all | 32 + itcl/itcl/tests/old/basic.test | 408 + itcl/itcl/tests/old/inherit.test | 272 + itcl/itcl/tests/old/tclIndex | 24 + itcl/itcl/tests/old/testlib.tcl | 131 + itcl/itcl/tests/old/toaster.test | 165 + itcl/itcl/tests/old/toasters/Appliance.tcl | 43 + itcl/itcl/tests/old/toasters/Hazard.tcl | 78 + itcl/itcl/tests/old/toasters/Outlet.tcl | 81 + itcl/itcl/tests/old/toasters/SmartToaster.tcl | 40 + itcl/itcl/tests/old/toasters/Toaster.tcl | 75 + itcl/itcl/tests/old/toasters/tclIndex | 18 + itcl/itcl/tests/old/toasters/usualway.tcl | 122 + itcl/itcl/tests/old/uplevel.test | 155 + itcl/itcl/tests/old/upvar.test | 110 + itcl/itcl/tests/protection.test | 370 + itcl/itcl/tests/scope.test | 207 + itcl/itcl/tests/tclIndex | 24 + itcl/itcl/unix/Makefile.in | 321 + itcl/itcl/unix/configure | 1521 +++ itcl/itcl/unix/configure.in | 224 + itcl/itcl/unix/pkgIndex.tcl.in | 3 + itcl/itcl/unix/tclAppInit.c | 157 + itcl/itcl/win/Makefile.in | 404 + itcl/itcl/win/configure | 2781 ++++ itcl/itcl/win/configure.in | 429 + itcl/itcl/win/dllEntryPoint.c | 90 + itcl/itcl/win/itcl.rc | 41 + itcl/itcl/win/itclsh.rc | 37 + itcl/itcl/win/makefile.bc | 212 + itcl/itcl/win/makefile.vc | 147 + itcl/itcl/win/pkgIndex.tcl | 3 + itcl/itcl/win/tclAppInit.c | 280 + itcl/itk/demos/README | 9 + itcl/itk/demos/itkedit | 227 + itcl/itk/doc/Archetype.n | 353 + itcl/itk/doc/Toplevel.n | 133 + itcl/itk/doc/Widget.n | 123 + itcl/itk/doc/itk.n | 96 + itcl/itk/doc/itkvars.n | 43 + itcl/itk/doc/itkwish.1 | 55 + itcl/itk/doc/license.terms | 27 + itcl/itk/doc/man.macros | 236 + itcl/itk/doc/usual.n | 76 + itcl/itk/examples/Info.itk | 59 + itcl/itk/examples/MessageInfo.itk | 40 + itcl/itk/examples/README | 30 + itcl/itk/examples/TextDisplay.itk | 136 + itcl/itk/examples/TextInfo.itk | 46 + itcl/itk/examples/tclIndex | 16 + itcl/itk/examples/viewfile | 44 + itcl/itk/generic/itk.h | 157 + itcl/itk/generic/itk_archetype.c | 4172 ++++++ itcl/itk/generic/itk_cmds.c | 316 + itcl/itk/generic/itk_option.c | 586 + itcl/itk/generic/itk_util.c | 200 + itcl/itk/itkConfig.sh.in | 39 + itcl/itk/library/Archetype.itk | 100 + itcl/itk/library/Toplevel.itk | 73 + itcl/itk/library/Widget.itk | 70 + itcl/itk/library/itk.tcl | 133 + itcl/itk/library/tclIndex | 11 + itcl/itk/license.terms | 38 + itcl/itk/mac/MW_ItkHeader.pch | 73 + itcl/itk/mac/itkMacApplication.r | 1676 +++ itcl/itk/mac/itkMacLibrary.r | 94 + itcl/itk/mac/itkMacResource.r | 1376 ++ itcl/itk/mac/itkMacTclCode.r | 29 + itcl/itk/mac/itkStaticApplication.r | 29 + itcl/itk/mac/pkgIndex.tcl | 3 + itcl/itk/mac/tclIndex | 11 + itcl/itk/mac/tkMacAppInit.c | 418 + itcl/itk/tests/all | 16 + itcl/itk/tests/defs | 343 + itcl/itk/tests/interp.test | 48 + itcl/itk/tests/option.test | 179 + itcl/itk/tests/privacy.test | 94 + itcl/itk/tests/public.test | 75 + itcl/itk/tests/toplevel.test | 80 + itcl/itk/tests/widget.test | 243 + itcl/itk/unix/Makefile.in | 336 + itcl/itk/unix/configure | 1608 +++ itcl/itk/unix/configure.in | 278 + itcl/itk/unix/pkgIndex.tcl.in | 3 + itcl/itk/unix/tkAppInit.c | 151 + itcl/itk/win/Makefile.in | 424 + itcl/itk/win/Makefile.in_first | 277 + itcl/itk/win/configure | 4120 ++++++ itcl/itk/win/configure.in | 630 + itcl/itk/win/dllEntryPoint.c | 92 + itcl/itk/win/makefile.bc | 228 + itcl/itk/win/makefile.vc | 271 + itcl/itk/win/pkgIndex.tcl | 3 + itcl/itk/win/rc/cursor00.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor02.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor04.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor06.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor08.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor0a.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor0c.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor0e.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor10.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor12.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor14.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor16.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor18.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor1a.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor1c.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor1e.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor20.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor22.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor24.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor26.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor28.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor2a.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor2c.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor2e.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor30.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor32.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor34.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor36.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor38.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor3a.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor3c.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor3e.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor40.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor42.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor44.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor46.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor48.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor4a.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor4c.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor4e.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor50.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor52.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor54.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor56.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor58.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor5a.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor5c.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor5e.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor60.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor62.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor64.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor66.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor68.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor6a.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor6c.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor6e.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor70.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor72.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor74.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor76.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor78.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor7a.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor7c.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor7e.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor80.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor82.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor84.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor86.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor88.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor8a.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor8c.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor8e.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor90.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor92.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor94.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor96.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/cursor98.cur | Bin 0 -> 326 bytes itcl/itk/win/rc/itk.ico | Bin 0 -> 1398 bytes itcl/itk/win/rc/itk.rc | 126 + itcl/itk/win/rc/itkwish.rc | 43 + itcl/itk/win/winMain.c | 354 + itcl/iwidgets3.0.0/CHANGES | 1508 +++ itcl/iwidgets3.0.0/README | 282 + itcl/iwidgets3.0.0/catalog | 373 + itcl/iwidgets3.0.0/demos/buttonbox | 19 + itcl/iwidgets3.0.0/demos/calendar | 30 + itcl/iwidgets3.0.0/demos/canvasprintdialog | 36 + itcl/iwidgets3.0.0/demos/checkbox | 18 + itcl/iwidgets3.0.0/demos/combobox | 19 + itcl/iwidgets3.0.0/demos/dateentry | 18 + itcl/iwidgets3.0.0/demos/datefield | 17 + itcl/iwidgets3.0.0/demos/demo.html | 41 + itcl/iwidgets3.0.0/demos/dialog | 51 + itcl/iwidgets3.0.0/demos/dialogshell | 40 + itcl/iwidgets3.0.0/demos/disjointlistbox | 12 + itcl/iwidgets3.0.0/demos/entryfield | 38 + itcl/iwidgets3.0.0/demos/extfileselectionbox | 14 + itcl/iwidgets3.0.0/demos/extfileselectiondialog | 18 + itcl/iwidgets3.0.0/demos/feedback | 26 + itcl/iwidgets3.0.0/demos/fileselectionbox | 14 + itcl/iwidgets3.0.0/demos/fileselectiondialog | 18 + itcl/iwidgets3.0.0/demos/finddialog | 225 + itcl/iwidgets3.0.0/demos/hierarchy | 160 + itcl/iwidgets3.0.0/demos/html/buttonbox.n.html | 245 + .../iwidgets3.0.0/demos/html/canvasprintbox.n.html | 302 + .../demos/html/canvasprintdialog.n.html | 203 + itcl/iwidgets3.0.0/demos/html/combobox.n.html | 411 + itcl/iwidgets3.0.0/demos/html/dialog.n.html | 195 + itcl/iwidgets3.0.0/demos/html/dialogshell.n.html | 254 + itcl/iwidgets3.0.0/demos/html/entryfield.n.html | 305 + itcl/iwidgets3.0.0/demos/html/feedback.n.html | 195 + .../demos/html/fileselectionbox.n.html | 510 + .../demos/html/fileselectiondialog.n.html | 255 + itcl/iwidgets3.0.0/demos/html/hyperhelp.n.html | 200 + .../demos/html/iwidgets2.2.0UserCmds.html | 50 + itcl/iwidgets3.0.0/demos/html/labeledwidget.n.html | 250 + itcl/iwidgets3.0.0/demos/html/menubar.n.html | 563 + itcl/iwidgets3.0.0/demos/html/messagedialog.n.html | 253 + itcl/iwidgets3.0.0/demos/html/notebook.n.html | 402 + itcl/iwidgets3.0.0/demos/html/optionmenu.n.html | 303 + itcl/iwidgets3.0.0/demos/html/panedwindow.n.html | 353 + itcl/iwidgets3.0.0/demos/html/promptdialog.n.html | 201 + itcl/iwidgets3.0.0/demos/html/pushbutton.n.html | 197 + itcl/iwidgets3.0.0/demos/html/radiobox.n.html | 247 + .../iwidgets3.0.0/demos/html/scrolledcanvas.n.html | 306 + itcl/iwidgets3.0.0/demos/html/scrolledframe.n.html | 306 + itcl/iwidgets3.0.0/demos/html/scrolledhtml.n.html | 415 + .../demos/html/scrolledlistbox.n.html | 410 + itcl/iwidgets3.0.0/demos/html/scrolledtext.n.html | 305 + itcl/iwidgets3.0.0/demos/html/selectionbox.n.html | 305 + .../demos/html/selectiondialog.n.html | 255 + itcl/iwidgets3.0.0/demos/html/shell.n.html | 195 + itcl/iwidgets3.0.0/demos/html/spindate.n.html | 303 + itcl/iwidgets3.0.0/demos/html/spinint.n.html | 203 + itcl/iwidgets3.0.0/demos/html/spinner.n.html | 258 + itcl/iwidgets3.0.0/demos/html/spintime.n.html | 301 + itcl/iwidgets3.0.0/demos/html/tabnotebook.n.html | 770 ++ itcl/iwidgets3.0.0/demos/html/tabset.n.html | 559 + itcl/iwidgets3.0.0/demos/html/toolbar.n.html | 348 + itcl/iwidgets3.0.0/demos/hyperhelp | 19 + itcl/iwidgets3.0.0/demos/images/box.xbm | 14 + itcl/iwidgets3.0.0/demos/images/clear.gif | Bin 0 -> 279 bytes itcl/iwidgets3.0.0/demos/images/close.gif | Bin 0 -> 249 bytes itcl/iwidgets3.0.0/demos/images/copy.gif | Bin 0 -> 269 bytes itcl/iwidgets3.0.0/demos/images/cut.gif | Bin 0 -> 179 bytes itcl/iwidgets3.0.0/demos/images/exit.gif | Bin 0 -> 396 bytes itcl/iwidgets3.0.0/demos/images/find.gif | Bin 0 -> 386 bytes itcl/iwidgets3.0.0/demos/images/help.gif | Bin 0 -> 591 bytes itcl/iwidgets3.0.0/demos/images/line.xbm | 14 + itcl/iwidgets3.0.0/demos/images/mag.gif | Bin 0 -> 183 bytes itcl/iwidgets3.0.0/demos/images/new.gif | Bin 0 -> 212 bytes itcl/iwidgets3.0.0/demos/images/open.gif | Bin 0 -> 258 bytes itcl/iwidgets3.0.0/demos/images/oval.xbm | 14 + itcl/iwidgets3.0.0/demos/images/paste.gif | Bin 0 -> 376 bytes itcl/iwidgets3.0.0/demos/images/points.xbm | 14 + itcl/iwidgets3.0.0/demos/images/poly.gif | Bin 0 -> 141 bytes itcl/iwidgets3.0.0/demos/images/print.gif | Bin 0 -> 263 bytes itcl/iwidgets3.0.0/demos/images/ruler.gif | Bin 0 -> 174 bytes itcl/iwidgets3.0.0/demos/images/save.gif | Bin 0 -> 270 bytes itcl/iwidgets3.0.0/demos/images/select.gif | Bin 0 -> 124 bytes itcl/iwidgets3.0.0/demos/images/text.xbm | 14 + itcl/iwidgets3.0.0/demos/iwidgets.gif | Bin 0 -> 7727 bytes itcl/iwidgets3.0.0/demos/labeledframe | 53 + itcl/iwidgets3.0.0/demos/labeledwidget | 28 + itcl/iwidgets3.0.0/demos/mainwindow | 165 + itcl/iwidgets3.0.0/demos/menubar | 79 + itcl/iwidgets3.0.0/demos/messagebox | 35 + itcl/iwidgets3.0.0/demos/messagedialog | 26 + itcl/iwidgets3.0.0/demos/notebook | 76 + itcl/iwidgets3.0.0/demos/optionmenu | 18 + itcl/iwidgets3.0.0/demos/panedwindow | 35 + itcl/iwidgets3.0.0/demos/promptdialog | 26 + itcl/iwidgets3.0.0/demos/pushbutton | 22 + itcl/iwidgets3.0.0/demos/radiobox | 19 + itcl/iwidgets3.0.0/demos/scrolledcanvas | 50 + itcl/iwidgets3.0.0/demos/scrolledframe | 34 + itcl/iwidgets3.0.0/demos/scrolledhtml | 19 + itcl/iwidgets3.0.0/demos/scrolledlistbox | 35 + itcl/iwidgets3.0.0/demos/scrolledtext | 18 + itcl/iwidgets3.0.0/demos/selectionbox | 17 + itcl/iwidgets3.0.0/demos/selectiondialog | 27 + itcl/iwidgets3.0.0/demos/spindate | 14 + itcl/iwidgets3.0.0/demos/spinint | 34 + itcl/iwidgets3.0.0/demos/spinner | 33 + itcl/iwidgets3.0.0/demos/spintime | 14 + itcl/iwidgets3.0.0/demos/tabnotebook | 77 + itcl/iwidgets3.0.0/demos/tabset | 21 + itcl/iwidgets3.0.0/demos/timeentry | 10 + itcl/iwidgets3.0.0/demos/timefield | 15 + itcl/iwidgets3.0.0/demos/toolbar | 50 + itcl/iwidgets3.0.0/demos/watch | 18 + itcl/iwidgets3.0.0/doc/buttonbox.n | 188 + itcl/iwidgets3.0.0/doc/calendar.n | 322 + itcl/iwidgets3.0.0/doc/canvasprintbox.n | 266 + itcl/iwidgets3.0.0/doc/canvasprintdialog.n | 167 + itcl/iwidgets3.0.0/doc/checkbox.n | 167 + itcl/iwidgets3.0.0/doc/combobox.n | 379 + itcl/iwidgets3.0.0/doc/dateentry.n | 175 + itcl/iwidgets3.0.0/doc/datefield.n | 192 + itcl/iwidgets3.0.0/doc/dialog.n | 139 + itcl/iwidgets3.0.0/doc/dialogshell.n | 216 + itcl/iwidgets3.0.0/doc/disjointlistbox.n | 264 + itcl/iwidgets3.0.0/doc/entryfield.n | 270 + itcl/iwidgets3.0.0/doc/extfileselectionbox.n | 383 + itcl/iwidgets3.0.0/doc/extfileselectiondialog.n | 237 + itcl/iwidgets3.0.0/doc/feedback.n | 144 + itcl/iwidgets3.0.0/doc/fileselectionbox.n | 379 + itcl/iwidgets3.0.0/doc/fileselectiondialog.n | 216 + itcl/iwidgets3.0.0/doc/finddialog.n | 292 + itcl/iwidgets3.0.0/doc/hierarchy.n | 546 + itcl/iwidgets3.0.0/doc/hyperhelp.n | 195 + itcl/iwidgets3.0.0/doc/iwidgets.ps | 13149 +++++++++++++++++++ itcl/iwidgets3.0.0/doc/labeledframe.n | 194 + itcl/iwidgets3.0.0/doc/labeledwidget.n | 206 + itcl/iwidgets3.0.0/doc/mainwindow.n | 306 + itcl/iwidgets3.0.0/doc/man.macros | 186 + itcl/iwidgets3.0.0/doc/menubar.n | 341 + itcl/iwidgets3.0.0/doc/messagebox.n | 274 + itcl/iwidgets3.0.0/doc/messagedialog.n | 214 + itcl/iwidgets3.0.0/doc/mkitclman | 320 + itcl/iwidgets3.0.0/doc/notebook.n | 318 + itcl/iwidgets3.0.0/doc/optionmenu.n | 259 + itcl/iwidgets3.0.0/doc/panedwindow.n | 297 + itcl/iwidgets3.0.0/doc/promptdialog.n | 198 + itcl/iwidgets3.0.0/doc/pushbutton.n | 147 + itcl/iwidgets3.0.0/doc/radiobox.n | 169 + itcl/iwidgets3.0.0/doc/scopedobject.n | 100 + itcl/iwidgets3.0.0/doc/scopedobject.n.backup | 2 + itcl/iwidgets3.0.0/doc/scrolledcanvas.n | 255 + itcl/iwidgets3.0.0/doc/scrolledframe.n | 208 + itcl/iwidgets3.0.0/doc/scrolledhtml.n | 304 + itcl/iwidgets3.0.0/doc/scrolledlistbox.n | 354 + itcl/iwidgets3.0.0/doc/scrolledtext.n | 279 + itcl/iwidgets3.0.0/doc/selectionbox.n | 300 + itcl/iwidgets3.0.0/doc/selectiondialog.n | 197 + itcl/iwidgets3.0.0/doc/shell.n | 196 + itcl/iwidgets3.0.0/doc/spindate.n | 274 + itcl/iwidgets3.0.0/doc/spinint.n | 183 + itcl/iwidgets3.0.0/doc/spinner.n | 227 + itcl/iwidgets3.0.0/doc/spintime.n | 265 + itcl/iwidgets3.0.0/doc/tabnotebook.n | 657 + itcl/iwidgets3.0.0/doc/tabset.n | 464 + itcl/iwidgets3.0.0/doc/timeentry.n | 194 + itcl/iwidgets3.0.0/doc/timefield.n | 175 + itcl/iwidgets3.0.0/doc/tk2html | 46 + itcl/iwidgets3.0.0/doc/tk2html.awk | 320 + itcl/iwidgets3.0.0/doc/tk2html.perl | 337 + itcl/iwidgets3.0.0/doc/tk2html2.awk | 53 + itcl/iwidgets3.0.0/doc/toolbar.n | 302 + itcl/iwidgets3.0.0/doc/watch.n | 285 + itcl/iwidgets3.0.0/generic/buttonbox.itk | 571 + itcl/iwidgets3.0.0/generic/calendar.itk | 938 ++ itcl/iwidgets3.0.0/generic/canvasprintbox.itk | 1110 ++ itcl/iwidgets3.0.0/generic/canvasprintdialog.itk | 155 + itcl/iwidgets3.0.0/generic/checkbox.itk | 313 + itcl/iwidgets3.0.0/generic/colors.itcl | 209 + itcl/iwidgets3.0.0/generic/combobox.itk | 1339 ++ itcl/iwidgets3.0.0/generic/dateentry.itk | 408 + itcl/iwidgets3.0.0/generic/datefield.itk | 854 ++ itcl/iwidgets3.0.0/generic/dialog.itk | 92 + itcl/iwidgets3.0.0/generic/dialogshell.itk | 350 + itcl/iwidgets3.0.0/generic/disjointlistbox.itk | 489 + itcl/iwidgets3.0.0/generic/entryfield.itk | 523 + itcl/iwidgets3.0.0/generic/extfileselectionbox.itk | 1127 ++ .../generic/extfileselectiondialog.itk | 182 + itcl/iwidgets3.0.0/generic/feedback.itk | 207 + itcl/iwidgets3.0.0/generic/fileselectionbox.itk | 1242 ++ itcl/iwidgets3.0.0/generic/fileselectiondialog.itk | 181 + itcl/iwidgets3.0.0/generic/finddialog.itk | 488 + itcl/iwidgets3.0.0/generic/hierarchy.itk | 1654 +++ itcl/iwidgets3.0.0/generic/hyperhelp.itk | 505 + itcl/iwidgets3.0.0/generic/labeledframe.itk | 516 + itcl/iwidgets3.0.0/generic/labeledwidget.itk | 437 + itcl/iwidgets3.0.0/generic/mainwindow.itk | 313 + itcl/iwidgets3.0.0/generic/menubar.itk | 2240 ++++ itcl/iwidgets3.0.0/generic/messagebox.itk | 403 + itcl/iwidgets3.0.0/generic/messagedialog.itk | 142 + itcl/iwidgets3.0.0/generic/notebook.itk | 946 ++ itcl/iwidgets3.0.0/generic/optionmenu.itk | 640 + itcl/iwidgets3.0.0/generic/pane.itk | 128 + itcl/iwidgets3.0.0/generic/panedwindow.itk | 893 ++ itcl/iwidgets3.0.0/generic/promptdialog.itk | 199 + itcl/iwidgets3.0.0/generic/pushbutton.itk | 356 + itcl/iwidgets3.0.0/generic/radiobox.itk | 328 + itcl/iwidgets3.0.0/generic/regexpfield.itk | 455 + itcl/iwidgets3.0.0/generic/roman.itcl | 28 + itcl/iwidgets3.0.0/generic/scopedobject.itcl | 181 + itcl/iwidgets3.0.0/generic/scrolledcanvas.itk | 477 + itcl/iwidgets3.0.0/generic/scrolledframe.itk | 250 + itcl/iwidgets3.0.0/generic/scrolledhtml.itk | 2505 ++++ itcl/iwidgets3.0.0/generic/scrolledlistbox.itk | 719 + itcl/iwidgets3.0.0/generic/scrolledtext.itk | 484 + itcl/iwidgets3.0.0/generic/scrolledwidget.itk | 434 + itcl/iwidgets3.0.0/generic/selectionbox.itk | 560 + itcl/iwidgets3.0.0/generic/selectiondialog.itk | 233 + itcl/iwidgets3.0.0/generic/shell.itk | 371 + itcl/iwidgets3.0.0/generic/spindate.itk | 700 + itcl/iwidgets3.0.0/generic/spinint.itk | 275 + itcl/iwidgets3.0.0/generic/spinner.itk | 448 + itcl/iwidgets3.0.0/generic/spintime.itk | 527 + itcl/iwidgets3.0.0/generic/tabnotebook.itk | 1075 ++ itcl/iwidgets3.0.0/generic/tabset.itk | 2747 ++++ itcl/iwidgets3.0.0/generic/tclIndex | 1336 ++ itcl/iwidgets3.0.0/generic/timeentry.itk | 399 + itcl/iwidgets3.0.0/generic/timefield.itk | 975 ++ itcl/iwidgets3.0.0/generic/toolbar.itk | 980 ++ itcl/iwidgets3.0.0/generic/unknownimage.gif | Bin 0 -> 472 bytes itcl/iwidgets3.0.0/generic/watch.itk | 626 + itcl/iwidgets3.0.0/incoming/README | 21 + itcl/iwidgets3.0.0/incoming/doc/man.macros | 186 + itcl/iwidgets3.0.0/incoming/tests/all | 14 + itcl/iwidgets3.0.0/incoming/tests/defs | 213 + itcl/iwidgets3.0.0/license.terms | 31 + itcl/iwidgets3.0.0/outgoing/README | 14 + itcl/iwidgets3.0.0/tests/all | 14 + itcl/iwidgets3.0.0/tests/buttonbox.test | 183 + itcl/iwidgets3.0.0/tests/calendar.test | 153 + itcl/iwidgets3.0.0/tests/canvasprintbox.test | 146 + itcl/iwidgets3.0.0/tests/canvasprintdialog.test | 165 + itcl/iwidgets3.0.0/tests/checkbox.test | 145 + itcl/iwidgets3.0.0/tests/combobox.test | 297 + itcl/iwidgets3.0.0/tests/dateentry.test | 183 + itcl/iwidgets3.0.0/tests/datefield.test | 168 + itcl/iwidgets3.0.0/tests/defs | 215 + itcl/iwidgets3.0.0/tests/dialog.test | 131 + itcl/iwidgets3.0.0/tests/dialogshell.test | 224 + itcl/iwidgets3.0.0/tests/disjointlistbox.test | 98 + itcl/iwidgets3.0.0/tests/entryfield.test | 172 + itcl/iwidgets3.0.0/tests/extfileselectionbox.test | 192 + .../tests/extfileselectiondialog.test | 200 + itcl/iwidgets3.0.0/tests/feedback.test | 132 + itcl/iwidgets3.0.0/tests/fileselectionbox.test | 195 + itcl/iwidgets3.0.0/tests/fileselectiondialog.test | 203 + itcl/iwidgets3.0.0/tests/finddialog.test | 152 + itcl/iwidgets3.0.0/tests/hierarchy.test | 281 + itcl/iwidgets3.0.0/tests/hyperhelp.html | 157 + itcl/iwidgets3.0.0/tests/hyperhelp.test | 162 + itcl/iwidgets3.0.0/tests/labeledframe.test | 178 + itcl/iwidgets3.0.0/tests/labeledwidget.test | 147 + itcl/iwidgets3.0.0/tests/menubar.test | 524 + itcl/iwidgets3.0.0/tests/messagebox.test | 179 + itcl/iwidgets3.0.0/tests/messagedialog.test | 147 + itcl/iwidgets3.0.0/tests/notebook.test | 294 + itcl/iwidgets3.0.0/tests/optionmenu.test | 176 + itcl/iwidgets3.0.0/tests/panedwindow.test | 157 + itcl/iwidgets3.0.0/tests/promptdialog.test | 159 + itcl/iwidgets3.0.0/tests/pushbutton.test | 136 + itcl/iwidgets3.0.0/tests/radiobox.test | 137 + itcl/iwidgets3.0.0/tests/regexpfield.test | 172 + itcl/iwidgets3.0.0/tests/scrolledcanvas.test | 169 + itcl/iwidgets3.0.0/tests/scrolledframe.test | 198 + itcl/iwidgets3.0.0/tests/scrolledhtml.test | 197 + itcl/iwidgets3.0.0/tests/scrolledlistbox.test | 200 + itcl/iwidgets3.0.0/tests/scrolledtext.test | 165 + itcl/iwidgets3.0.0/tests/selectionbox.test | 174 + itcl/iwidgets3.0.0/tests/selectiondialog.test | 186 + itcl/iwidgets3.0.0/tests/shell.test | 196 + itcl/iwidgets3.0.0/tests/spindate.test | 156 + itcl/iwidgets3.0.0/tests/spinint.test | 166 + itcl/iwidgets3.0.0/tests/spinner.test | 148 + itcl/iwidgets3.0.0/tests/spintime.test | 140 + itcl/iwidgets3.0.0/tests/tabnotebook.test | 313 + itcl/iwidgets3.0.0/tests/tabset.test | 317 + itcl/iwidgets3.0.0/tests/timeentry.test | 178 + itcl/iwidgets3.0.0/tests/timefield.test | 163 + itcl/iwidgets3.0.0/tests/toolbar.test | 261 + itcl/iwidgets3.0.0/tests/usual.test | 53 + itcl/iwidgets3.0.0/tests/watch.test | 149 + itcl/iwidgets3.0.0/unix/Makefile.in | 233 + itcl/iwidgets3.0.0/unix/configure | 1118 ++ itcl/iwidgets3.0.0/unix/configure.in | 142 + itcl/iwidgets3.0.0/unix/iwidgets.tcl.in | 29 + itcl/iwidgets3.0.0/unix/pkgIndex.tcl.in | 3 + itcl/license.terms | 83 + itcl/makefile.bc | 114 + itcl/makefile.vc | 147 + itcl/testsuite/config/default.exp | 20 + itcl/testsuite/itcl.tests/itcl-test.exp | 39 + libgui/ChangeLog | 828 ++ libgui/Makefile.am | 4 + libgui/Makefile.in | 430 + libgui/README | 202 + libgui/acconfig.h | 14 + libgui/acinclude.m4 | 1 + libgui/aclocal.m4 | 250 + libgui/config.h.in | 77 + libgui/configure | 2709 ++++ libgui/configure.in | 127 + libgui/doc/tkTable.n | 1223 ++ libgui/doc/tkTable_license.terms | 41 + libgui/library/Makefile.am | 47 + libgui/library/Makefile.in | 335 + libgui/library/advice.tcl | 82 + libgui/library/balloon.tcl | 532 + libgui/library/bbox.tcl | 57 + libgui/library/bgerror.tcl | 64 + libgui/library/bindings.tcl | 88 + libgui/library/canvas.tcl | 29 + libgui/library/center.tcl | 18 + libgui/library/cframe.tcl | 146 + libgui/library/combobox.tcl | 1118 ++ libgui/library/debug.tcl | 765 ++ libgui/library/def.tcl | 29 + libgui/library/font.tcl | 26 + libgui/library/gensym.tcl | 13 + libgui/library/gettext.tcl | 7 + libgui/library/hooks.tcl | 35 + libgui/library/internet.tcl | 64 + libgui/library/lframe.tcl | 19 + libgui/library/list.tcl | 83 + libgui/library/looknfeel.tcl | 48 + libgui/library/menu.tcl | 39 + libgui/library/mono.tcl | 14 + libgui/library/multibox.tcl | 251 + libgui/library/pane.tcl | 136 + libgui/library/panedwindow.tcl | 851 ++ libgui/library/parse_args.tcl | 42 + libgui/library/path.tcl | 20 + libgui/library/pkgIndex.tcl | 11 + libgui/library/postghost.tcl | 38 + libgui/library/prefs.tcl | 198 + libgui/library/print.tcl | 334 + libgui/library/sendpr.tcl | 348 + libgui/library/tclIndex | 199 + libgui/library/toolbar.tcl | 235 + libgui/library/topbind.tcl | 29 + libgui/library/tree.tcl | 2104 +++ libgui/library/treetable.tcl | 206 + libgui/library/ulset.tcl | 22 + libgui/library/ventry.tcl | 137 + libgui/library/wframe.tcl | 87 + libgui/library/wingrab.tcl | 59 + libgui/src/Makefile.am | 85 + libgui/src/Makefile.in | 442 + libgui/src/guitcl.h | 113 + libgui/src/paths.c | 289 + libgui/src/subcommand.c | 126 + libgui/src/subcommand.h | 31 + libgui/src/tclcursor.c | 77 + libgui/src/tclgetdir.c | 269 + libgui/src/tclhelp.c | 618 + libgui/src/tclmain.c | 100 + libgui/src/tclmapi.c | 79 + libgui/src/tclmsgbox.c | 462 + libgui/src/tclshellexe.c | 76 + libgui/src/tclsizebox.c | 236 + libgui/src/tclwinfont.c | 331 + libgui/src/tclwingrab.c | 64 + libgui/src/tclwinmode.c | 89 + libgui/src/tclwinpath.c | 181 + libgui/src/tclwinprint.c | 935 ++ libgui/src/tkCanvEdge.c | 2095 +++ libgui/src/tkCanvLayout.c | 2680 ++++ libgui/src/tkCanvLayout.h | 117 + libgui/src/tkGraphCanvas.c | 893 ++ libgui/src/tkTable.c | 4898 +++++++ libgui/src/tkTable.h | 418 + libgui/src/tkTable.tcl | 560 + libgui/src/tkTableCell.c | 563 + libgui/src/tkTableCmd.c | 158 + libgui/src/tkTableCmd.h | 52 + libgui/src/tkTableTag.c | 756 ++ libgui/src/tkTableWin.c | 856 ++ libgui/src/tkTable_version.in | 1 + libgui/src/tkTabletcl.h | 366 + libgui/src/tkTreeTable.c | 8070 ++++++++++++ libgui/src/tkTreeTable.h | 172 + libgui/src/tkWarpPointer.c | 70 + libgui/src/tkWinPrintCanvas.c | 193 + libgui/src/tkWinPrintText.c | 533 + libgui/src/xpmlib.c | 1592 +++ libgui/stamp-h.in | 1 + tix/ABOUT.html | 119 + tix/ABOUT.txt | 86 + tix/ChangeLog | 623 + tix/Makefile.in | 46 + tix/README.html | 59 + tix/README.txt | 39 + tix/Version | 2 + tix/configure | 960 ++ tix/configure.in | 20 + tix/demos/MkChoose.tcl | 279 + tix/demos/MkDirLis.tcl | 65 + tix/demos/MkManag.tcl | 171 + tix/demos/MkSample.tcl | 269 + tix/demos/MkScroll.tcl | 156 + tix/demos/README | 24 + tix/demos/bitmaps/about.xpm | 50 + tix/demos/bitmaps/bold.xbm | 6 + tix/demos/bitmaps/capital.xbm | 6 + tix/demos/bitmaps/centerj.xbm | 6 + tix/demos/bitmaps/combobox.xbm | 14 + tix/demos/bitmaps/combobox.xpm | 49 + tix/demos/bitmaps/drivea.xbm | 14 + tix/demos/bitmaps/drivea.xpm | 43 + tix/demos/bitmaps/exit.xpm | 48 + tix/demos/bitmaps/filebox.xbm | 14 + tix/demos/bitmaps/filebox.xpm | 49 + tix/demos/bitmaps/harddisk.xbm | 14 + tix/demos/bitmaps/harddisk.xpm | 43 + tix/demos/bitmaps/italic.xbm | 6 + tix/demos/bitmaps/justify.xbm | 6 + tix/demos/bitmaps/leftj.xbm | 6 + tix/demos/bitmaps/netw.xbm | 14 + tix/demos/bitmaps/netw.xpm | 45 + tix/demos/bitmaps/network.xbm | 14 + tix/demos/bitmaps/network.xpm | 45 + tix/demos/bitmaps/optmenu.xpm | 48 + tix/demos/bitmaps/rightj.xbm | 6 + tix/demos/bitmaps/select.xpm | 52 + tix/demos/bitmaps/tix.gif | Bin 0 -> 11042 bytes tix/demos/bitmaps/underlin.xbm | 6 + tix/demos/c-code/Makefile.in | 147 + tix/demos/c-code/library/Init.tcl | 0 tix/demos/c-code/library/tclIndex | 9 + tix/demos/c-code/myCmds.c | 48 + tix/demos/c-code/myInit.c | 60 + tix/demos/c-code/tixAppInit.c | 122 + tix/demos/et/Makefile.demo | 16 + tix/demos/et/README | 9 + tix/demos/et/etdemo.et | 52 + tix/demos/samples/AllSampl.tcl | 193 + tix/demos/samples/ArrowBtn.tcl | 183 + tix/demos/samples/Balloon.tcl | 44 + tix/demos/samples/BtnBox.tcl | 53 + tix/demos/samples/CObjView.tcl | 85 + tix/demos/samples/ChkList.tcl | 175 + tix/demos/samples/CmpImg.tcl | 60 + tix/demos/samples/CmpImg1.tcl | 178 + tix/demos/samples/CmpImg2.tcl | 132 + tix/demos/samples/CmpImg3.tcl | 86 + tix/demos/samples/CmpImg4.tcl | 121 + tix/demos/samples/ComboBox.tcl | 115 + tix/demos/samples/Control.tcl | 129 + tix/demos/samples/DirDlg.tcl | 86 + tix/demos/samples/DirList.tcl | 87 + tix/demos/samples/DirTree.tcl | 88 + tix/demos/samples/DragDrop.tcl | 46 + tix/demos/samples/DynTree.tcl | 145 + tix/demos/samples/EFileDlg.tcl | 99 + tix/demos/samples/EditGrid.tcl | 277 + tix/demos/samples/FileDlg.tcl | 94 + tix/demos/samples/FileEnt.tcl | 77 + tix/demos/samples/HList1.tcl | 155 + tix/demos/samples/LabEntry.tcl | 90 + tix/demos/samples/LabFrame.tcl | 81 + tix/demos/samples/ListNBK.tcl | 83 + tix/demos/samples/Meter.tcl | 73 + tix/demos/samples/NoteBook.tcl | 98 + tix/demos/samples/OptMenu.tcl | 99 + tix/demos/samples/PanedWin.tcl | 108 + tix/demos/samples/PopMenu.tcl | 69 + tix/demos/samples/SGrid0.tcl | 131 + tix/demos/samples/SGrid1.tcl | 211 + tix/demos/samples/SHList.tcl | 107 + tix/demos/samples/SHList2.tcl | 161 + tix/demos/samples/SListBox.tcl | 81 + tix/demos/samples/STList1.tcl | 53 + tix/demos/samples/STList2.tcl | 81 + tix/demos/samples/STList3.tcl | 121 + tix/demos/samples/SText.tcl | 71 + tix/demos/samples/SWindow.tcl | 85 + tix/demos/samples/Sample.tcl | 32 + tix/demos/samples/Select.tcl | 110 + tix/demos/samples/StdBBox.tcl | 61 + tix/demos/samples/Tree.tcl | 87 + tix/demos/samples/Xpm.tcl | 85 + tix/demos/samples/Xpm1.tcl | 104 + tix/demos/tclIndex | 54 + tix/demos/widget | 367 + tix/docs/BinInst.html | 12 + tix/docs/BinInst.txt | 11 + tix/docs/Changes.html | 333 + tix/docs/ET.txt | 1325 ++ tix/docs/FAQ.html | 700 + tix/docs/FAQ.txt | 476 + tix/docs/Files.txt | 187 + tix/docs/Install.html | 28 + tix/docs/Install.txt | 25 + tix/docs/Pkg.txt | 127 + tix/docs/Plugin.txt | 17 + tix/docs/Porting.html | 46 + tix/docs/Release-4.1.0.html | 24 + tix/docs/Release-4.1.0.txt | 23 + tix/docs/Release-4.1a2.html | 40 + tix/docs/Release-4.1a2.txt | 35 + tix/docs/Release-4.1a3.html | 104 + tix/docs/Release-4.1a3.txt | 88 + tix/docs/Release-4.1b1.html | 152 + tix/docs/Release-4.1b1.txt | 136 + tix/docs/Release-4.1b2.html | 187 + tix/docs/Release-4.1b2.txt | 161 + tix/docs/Release.html | 20 + tix/docs/Release.txt | 18 + tix/docs/SAModule.txt | 89 + tix/docs/UnixInst.html | 211 + tix/docs/UnixInst.txt | 171 + tix/docs/WinInst.html | 177 + tix/docs/WinInst.txt | 141 + tix/docs/img/demo1.gif | Bin 0 -> 25024 bytes tix/docs/img/setup0.gif | Bin 0 -> 4259 bytes tix/docs/img/setup1.gif | Bin 0 -> 15626 bytes tix/docs/img/setup2.gif | Bin 0 -> 1568 bytes tix/docs/img/setup3.gif | Bin 0 -> 1579 bytes tix/docs/img/setup5.gif | Bin 0 -> 1546 bytes tix/docs/img/setup6.gif | Bin 0 -> 10539 bytes tix/docs/img/tk42a.gif | Bin 0 -> 1175 bytes tix/docs/img/tk42b.gif | Bin 0 -> 3149 bytes tix/docs/license.html_lib | 38 + tix/docs/license.tcltk | 39 + tix/generic/tix.h | 467 + tix/generic/tixBitmaps.h | 615 + tix/generic/tixClass.c | 1971 +++ tix/generic/tixCmds.c | 935 ++ tix/generic/tixCompat.c | 60 + tix/generic/tixDItem.c | 677 + tix/generic/tixDef.h | 169 + tix/generic/tixDiITxt.c | 758 ++ tix/generic/tixDiImg.c | 611 + tix/generic/tixDiStyle.c | 952 ++ tix/generic/tixDiText.c | 667 + tix/generic/tixDiWin.c | 739 ++ tix/generic/tixError.c | 77 + tix/generic/tixForm.c | 2114 +++ tix/generic/tixForm.h | 149 + tix/generic/tixFormMisc.c | 597 + tix/generic/tixGeometry.c | 379 + tix/generic/tixGrData.c | 923 ++ tix/generic/tixGrData.h | 85 + tix/generic/tixGrFmt.c | 806 ++ tix/generic/tixGrRC.c | 112 + tix/generic/tixGrSel.c | 302 + tix/generic/tixGrSort.c | 461 + tix/generic/tixGrUtl.c | 202 + tix/generic/tixGrid.c | 3307 +++++ tix/generic/tixGrid.h | 462 + tix/generic/tixHLCol.c | 405 + tix/generic/tixHLHdr.c | 576 + tix/generic/tixHLInd.c | 278 + tix/generic/tixHList.c | 4417 +++++++ tix/generic/tixHList.h | 323 + tix/generic/tixImgCmp.c | 1456 ++ tix/generic/tixImgXpm.c | 1267 ++ tix/generic/tixImgXpm.h | 139 + tix/generic/tixInit.c | 615 + tix/generic/tixInputO.c | 441 + tix/generic/tixInt.h | 880 ++ tix/generic/tixItcl.c | 126 + tix/generic/tixItcl.h | 78 + tix/generic/tixList.c | 316 + tix/generic/tixMethod.c | 604 + tix/generic/tixMwm.c | 905 ++ tix/generic/tixNBFrame.c | 1584 +++ tix/generic/tixOption.c | 385 + tix/generic/tixPort.h | 121 + tix/generic/tixScroll.c | 188 + tix/generic/tixSmpLs.c | 121 + tix/generic/tixTList.c | 2469 ++++ tix/generic/tixTList.h | 138 + tix/generic/tixUtils.c | 863 ++ tix/generic/tixWidget.c | 309 + tix/generic/tk4.2/console.tcl | 433 + tix/generic/tk4.2/tk.tcl | 157 + tix/install.sh | 119 + tix/library/Balloon.tcl | 565 + tix/library/BtnBox.tcl | 115 + tix/library/CObjView.tcl | 359 + tix/library/ChkList.tcl | 237 + tix/library/ComboBox.tcl | 1549 +++ tix/library/Compat.tcl | 39 + tix/library/Console.tcl | 515 + tix/library/Control.tcl | 498 + tix/library/DefSchm.tcl | 86 + tix/library/DialogS.tcl | 169 + tix/library/DirBox.tcl | 220 + tix/library/DirDlg.tcl | 90 + tix/library/DirList.tcl | 286 + tix/library/DirTree.tcl | 400 + tix/library/DragDrop.tcl | 161 + tix/library/DtlList.tcl | 44 + tix/library/EFileBox.tcl | 452 + tix/library/EFileDlg.tcl | 51 + tix/library/Event.tcl | 239 + tix/library/FileBox.tcl | 579 + tix/library/FileCbx.tcl | 100 + tix/library/FileCmpt.tcl | 31 + tix/library/FileDlg.tcl | 70 + tix/library/FileEnt.tcl | 235 + tix/library/FileUtil.tcl | 92 + tix/library/FloatEnt.tcl | 126 + tix/library/Grid.tcl | 1113 ++ tix/library/HList.tcl | 841 ++ tix/library/HListDD.tcl | 199 + tix/library/IconView.tcl | 271 + tix/library/Init.tcl | 163 + tix/library/LabEntry.tcl | 83 + tix/library/LabFrame.tcl | 45 + tix/library/LabWidg.tcl | 152 + tix/library/ListNBk.tcl | 150 + tix/library/Makefile | 5 + tix/library/Meter.tcl | 124 + tix/library/MultView.tcl | 152 + tix/library/NoteBook.tcl | 248 + tix/library/OldUtil.tcl | 223 + tix/library/OptMenu.tcl | 389 + tix/library/PanedWin.tcl | 1215 ++ tix/library/PopMenu.tcl | 218 + tix/library/Primitiv.tcl | 425 + tix/library/ResizeH.tcl | 495 + tix/library/SGrid.tcl | 228 + tix/library/SHList.tcl | 155 + tix/library/SListBox.tcl | 304 + tix/library/STList.tcl | 92 + tix/library/SText.tcl | 138 + tix/library/SWidget.tcl | 507 + tix/library/SWindow.tcl | 277 + tix/library/Select.tcl | 295 + tix/library/Shell.tcl | 41 + tix/library/SimpDlg.tcl | 42 + tix/library/StackWin.tcl | 80 + tix/library/StatBar.tcl | 51 + tix/library/StdBBox.tcl | 66 + tix/library/StdShell.tcl | 44 + tix/library/TList.tcl | 995 ++ tix/library/Tix.tcl | 506 + tix/library/Tree.tcl | 190 + tix/library/UnixFile.tcl | 407 + tix/library/Utils.tcl | 498 + tix/library/VResize.tcl | 205 + tix/library/VStack.tcl | 426 + tix/library/VTree.tcl | 205 + tix/library/Variable.tcl | 96 + tix/library/Verify.tcl | 21 + tix/library/Version.tcl | 17 + tix/library/WInfo.tcl | 35 + tix/library/WinFile.tcl | 648 + tix/library/bitmaps/act_fold.gif | Bin 0 -> 90 bytes tix/library/bitmaps/act_fold.xbm | 5 + tix/library/bitmaps/act_fold.xpm | 22 + tix/library/bitmaps/balarrow.xbm | 4 + tix/library/bitmaps/cbxarrow.xbm | 6 + tix/library/bitmaps/ck_def.xbm | 6 + tix/library/bitmaps/ck_off.xbm | 6 + tix/library/bitmaps/ck_on.xbm | 6 + tix/library/bitmaps/cross.xbm | 6 + tix/library/bitmaps/decr.xbm | 4 + tix/library/bitmaps/drop.xbm | 8 + tix/library/bitmaps/file.gif | Bin 0 -> 76 bytes tix/library/bitmaps/file.xbm | 5 + tix/library/bitmaps/file.xpm | 18 + tix/library/bitmaps/folder.gif | Bin 0 -> 79 bytes tix/library/bitmaps/folder.xbm | 5 + tix/library/bitmaps/folder.xpm | 21 + tix/library/bitmaps/harddisk.xbm | 14 + tix/library/bitmaps/hourglas.mask | 16 + tix/library/bitmaps/hourglas.xbm | 16 + tix/library/bitmaps/incr.xbm | 4 + tix/library/bitmaps/info.gif | Bin 0 -> 159 bytes tix/library/bitmaps/info.xpm | 38 + tix/library/bitmaps/maximize.xbm | 6 + tix/library/bitmaps/minimize.xbm | 6 + tix/library/bitmaps/minus.gif | Bin 0 -> 57 bytes tix/library/bitmaps/minus.xbm | 5 + tix/library/bitmaps/minus.xpm | 14 + tix/library/bitmaps/minusarm.gif | Bin 0 -> 59 bytes tix/library/bitmaps/minusarm.xbm | 5 + tix/library/bitmaps/minusarm.xpm | 15 + tix/library/bitmaps/mktransgif.tcl | 11 + tix/library/bitmaps/network.xbm | 14 + tix/library/bitmaps/no_entry.gif | Bin 0 -> 176 bytes tix/library/bitmaps/no_entry.xpm | 39 + tix/library/bitmaps/openfile.xbm | 5 + tix/library/bitmaps/openfold.gif | Bin 0 -> 84 bytes tix/library/bitmaps/openfold.xbm | 5 + tix/library/bitmaps/openfold.xpm | 21 + tix/library/bitmaps/plus.gif | Bin 0 -> 58 bytes tix/library/bitmaps/plus.xbm | 5 + tix/library/bitmaps/plus.xpm | 14 + tix/library/bitmaps/plusarm.gif | Bin 0 -> 60 bytes tix/library/bitmaps/plusarm.xbm | 5 + tix/library/bitmaps/plusarm.xpm | 15 + tix/library/bitmaps/resize1.xbm | 8 + tix/library/bitmaps/resize2.xbm | 8 + tix/library/bitmaps/restore.xbm | 6 + tix/library/bitmaps/srcfile.gif | Bin 0 -> 79 bytes tix/library/bitmaps/srcfile.xbm | 5 + tix/library/bitmaps/srcfile.xpm | 18 + tix/library/bitmaps/system.xbm | 6 + tix/library/bitmaps/textfile.gif | Bin 0 -> 79 bytes tix/library/bitmaps/textfile.xbm | 5 + tix/library/bitmaps/textfile.xpm | 18 + tix/library/bitmaps/tick.xbm | 6 + tix/library/bitmaps/warning.gif | Bin 0 -> 180 bytes tix/library/bitmaps/warning.xpm | 38 + tix/library/fs.tcl | 644 + tix/library/pref/12Point.fs | 11 + tix/library/pref/12Point.fsc | 32 + tix/library/pref/14Point.fs | 10 + tix/library/pref/14Point.fsc | 32 + tix/library/pref/Bisque.cs | 32 + tix/library/pref/Bisque.csc | 335 + tix/library/pref/Blue.cs | 32 + tix/library/pref/Blue.csc | 335 + tix/library/pref/Gray.cs | 33 + tix/library/pref/Gray.csc | 336 + tix/library/pref/Makefile | 45 + tix/library/pref/Old12Pt.fs | 11 + tix/library/pref/Old14Pt.fs | 10 + tix/library/pref/SGIGray.cs | 35 + tix/library/pref/SGIGray.csc | 336 + tix/library/pref/TK.cs | 32 + tix/library/pref/TK.csc | 69 + tix/library/pref/TK.fs | 13 + tix/library/pref/TK.fsc | 16 + tix/library/pref/TixGray.cs | 33 + tix/library/pref/TixGray.csc | 336 + tix/library/pref/TkWin.cs | 65 + tix/library/pref/TkWin.csc | 320 + tix/library/pref/TkWin.fs | 13 + tix/library/pref/TkWin.fsc | 31 + tix/library/pref/tixmkpref | 413 + tix/library/tclIndex | 521 + tix/license.terms | 32 + tix/man/Balloon.html | 174 + tix/man/Balloon.n | 237 + tix/man/BtnBox.html | 154 + tix/man/BtnBox.n | 219 + tix/man/ChkList.html | 192 + tix/man/ChkList.n | 252 + tix/man/Control.html | 371 + tix/man/Control.n | 478 + tix/man/DItem.html | 420 + tix/man/DItem.n | 542 + tix/man/Destroy.html | 21 + tix/man/Destroy.n | 32 + tix/man/DirDlg.html | 123 + tix/man/DirDlg.n | 175 + tix/man/DirList.html | 220 + tix/man/DirList.n | 302 + tix/man/DirTree.html | 199 + tix/man/DirTree.n | 273 + tix/man/EFileBox.html | 284 + tix/man/EFileBox.n | 376 + tix/man/EFileDlg.html | 106 + tix/man/EFileDlg.n | 164 + tix/man/FileBox.html | 216 + tix/man/FileBox.n | 259 + tix/man/FileDlg.html | 115 + tix/man/FileDlg.n | 174 + tix/man/FileEnt.html | 262 + tix/man/FileEnt.n | 345 + tix/man/Form.html | 419 + tix/man/Form.n | 460 + tix/man/GetBool.html | 24 + tix/man/GetBool.n | 44 + tix/man/GetInt.html | 26 + tix/man/GetInt.n | 45 + tix/man/Grid.html | 225 + tix/man/Grid.n | 347 + tix/man/HList.html | 1087 ++ tix/man/HList.n | 1182 ++ tix/man/InpOnly.html | 77 + tix/man/InpOnly.n | 126 + tix/man/LabEntry.html | 136 + tix/man/LabEntry.n | 201 + tix/man/LabFrame.html | 155 + tix/man/LabFrame.n | 222 + tix/man/ListNBK.html | 213 + tix/man/ListNBK.n | 277 + tix/man/Meter.html | 96 + tix/man/Meter.n | 139 + tix/man/Mwm.html | 85 + tix/man/Mwm.n | 110 + tix/man/NBFrame.html | 100 + tix/man/NBFrame.n | 147 + tix/man/NoteBook.html | 263 + tix/man/NoteBook.n | 329 + tix/man/OptMenu.html | 232 + tix/man/OptMenu.n | 306 + tix/man/PanedWin.html | 307 + tix/man/PanedWin.n | 400 + tix/man/PopMenu.html | 177 + tix/man/PopMenu.n | 246 + tix/man/SHList.html | 160 + tix/man/SHList.n | 220 + tix/man/SListBox.html | 214 + tix/man/SListBox.n | 285 + tix/man/SText.html | 160 + tix/man/SText.n | 220 + tix/man/SWindow.html | 206 + tix/man/SWindow.n | 271 + tix/man/Select.html | 307 + tix/man/Select.n | 400 + tix/man/StdBBox.html | 166 + tix/man/StdBBox.n | 239 + tix/man/TList.html | 606 + tix/man/TList.n | 680 + tix/man/TixComboBox.html | 492 + tix/man/TixComboBox.n | 619 + tix/man/TixIntro.html | 55 + tix/man/TixIntro.n | 73 + tix/man/Tree.html | 237 + tix/man/Tree.n | 306 + tix/man/Utils.html | 70 + tix/man/Utils.n | 82 + tix/man/Wm.html | 45 + tix/man/Wm.n | 59 + tix/man/compound.html | 314 + tix/man/compound.n | 339 + tix/man/index.html | 67 + tix/man/man.macros | 186 + tix/man/pixmap.html | 77 + tix/man/pixmap.n | 84 + tix/man/tix.html | 216 + tix/man/tix.n | 256 + tix/man/tixwish.1 | 192 + tix/man/tixwish.html | 172 + tix/tests/Driver.tcl | 356 + tix/tests/Makefile.in | 198 + tix/tests/README | 58 + tix/tests/Test.tcl | 60 + tix/tests/cleanup/cleanup.tcl | 28 + tix/tests/cleanup/files | 1 + tix/tests/files | 24 + tix/tests/general/NoteBook.tcl | 60 + tix/tests/general/api.tcl | 254 + tix/tests/general/cmderror.tcl | 49 + tix/tests/general/combobox.tcl | 107 + tix/tests/general/dirbox.tcl | 281 + tix/tests/general/draw.tcl | 22 + tix/tests/general/event0.tcl | 100 + tix/tests/general/filebox.tcl | 133 + tix/tests/general/files | 20 + tix/tests/general/fs.tcl | 236 + tix/tests/general/labentry.tcl | 52 + tix/tests/general/minterp.tcl | 60 + tix/tests/general/mwm.tcl | 46 + tix/tests/general/oop.tcl | 11 + tix/tests/general/options.tcl | 17 + tix/tests/general/optmenu.tcl | 105 + tix/tests/general/pane.tcl | 29 + tix/tests/general/pkginit.tcl | 6 + tix/tests/general/samples.tcl | 73 + tix/tests/general/select.tcl | 45 + tix/tests/general/slistbox.tcl | 16 + tix/tests/general/testtmpl.tcl | 28 + tix/tests/general/var1.tcl | 59 + tix/tests/grid/Grid.tcl | 155 + tix/tests/grid/files | 1 + tix/tests/hlist/DirList.tcl | 51 + tix/tests/hlist/HLHdr.tcl | 94 + tix/tests/hlist/HLInd.tcl | 51 + tix/tests/hlist/HList.tcl | 76 + tix/tests/hlist/files | 3 + tix/tests/hlist/items.tcl | 40 + tix/tests/itcl/files | 5 + tix/tests/itcl/general.tcl | 9 + tix/tests/itcl/itk.tcl | 24 + tix/tests/itcl/namesp.tcl | 22 + tix/tests/itcl/pkginit.tcl | 2 + tix/tests/itcl/scope1.tcl | 54 + tix/tests/library/CaseData.tcl | 148 + tix/tests/library/TestLib.tcl | 598 + tix/tests/library/TestLib.txt | 53 + tix/tests/library/load-init.tcl | 7 + tix/tests/load/files | 1 + tix/tests/load/general.tcl | 22 + tix/tests/load/pkginit.tcl | 0 tix/tests/tlist/TList.tcl | 38 + tix/tests/tlist/files | 1 + tix/tests/xpm/2cpp.xpm | 11 + tix/tests/xpm/brace.xpm | 19 + tix/tests/xpm/comments.xpm | 21 + tix/tests/xpm/compound.tcl | 47 + tix/tests/xpm/f-badcol.xpm | 21 + tix/tests/xpm/f-badpix.xpm | 21 + tix/tests/xpm/f-commt.xpm | 32 + tix/tests/xpm/f-missline.xpm | 19 + tix/tests/xpm/f-ok.xpm | 21 + tix/tests/xpm/f-shortln.xpm | 21 + tix/tests/xpm/files | 2 + tix/tests/xpm/folder.xpm | 21 + tix/tests/xpm/xpm.tcl | 145 + tix/tixConfig.sh.in | 25 + tix/tools/README.html | 32 + tix/tools/color.tcl | 39 + tix/tools/doconfig.tcl | 746 ++ tix/tools/domakefile.tcl | 764 ++ tix/tools/dosstrip.tcl | 72 + tix/tools/doxx.tcl | 160 + tix/tools/hanno.tcl | 66 + tix/tools/icon.tcl | 17 + tix/tools/makebitmap.tcl | 81 + tix/tools/makescript.tcl | 150 + tix/tools/mkfaq.tcl | 10 + tix/tools/setcolon.sh | 32 + tix/tools/tclc.tcl | 223 + tix/tools/tclc_s.tcl | 85 + tix/tools/tcltrim | 24 + tix/tools/tixindex | 66 + tix/tools/tixverify.tcl | 323 + tix/unix/Makefile.in | 347 + tix/unix/aclocal.m4 | 1 + tix/unix/configure | 1506 +++ tix/unix/configure.in | 35 + tix/unix/samAppInit.c | 177 + tix/unix/tixUnixDraw.c | 307 + tix/unix/tixUnixInt.h | 20 + tix/unix/tixUnixPort.h | 29 + tix/unix/tixUnixSam.c | 39 + tix/unix/tixUnixWm.c | 23 + tix/unix/tixUnixXpm.c | 270 + tix/unix/tk4.2/Makefile.in | 541 + tix/unix/tk4.2/configure | 2190 +++ tix/unix/tk4.2/configure.in | 431 + tix/unix/tk4.2/pkgIndex.tcl.in | 4 + tix/unix/tk4.2/tclUnixSam76.c | 26 + tix/unix/tk4.2/tixAppInit.c | 112 + tix/unix/tk4.2/tkUnixSam42.c | 215 + tix/unix/tk8.0/Makefile.in | 555 + tix/unix/tk8.0/configure | 2163 +++ tix/unix/tk8.0/configure.in | 445 + tix/unix/tk8.0/pkgIndex.tcl.in | 4 + tix/unix/tk8.0/tixAppInit.c | 112 + tix/unix/tk8.1/Makefile.in | 556 + tix/unix/tk8.1/aclocal.m4 | 1 + tix/unix/tk8.1/configure | 2480 ++++ tix/unix/tk8.1/configure.in | 372 + tix/unix/tk8.1/pkgIndex.tcl.in | 4 + tix/unix/tk8.1/tixAppInit.c | 112 + tix/win/DLLDemo/Demo.c | 132 + tix/win/DLLDemo/Makefile.bc | 178 + tix/win/DLLDemo/README | 72 + tix/win/Makefile.in | 620 + tix/win/README | 2 + tix/win/aclocal.m4 | 1 + tix/win/configure | 1681 +++ tix/win/configure.in | 65 + tix/win/makefile.bc | 367 + tix/win/makefile.vc | 292 + tix/win/pkgIndex.tcl | 15 + tix/win/rc/tixwish.ico | Bin 0 -> 1398 bytes tix/win/rc/tixwish.rc | 40 + tix/win/tcl7.6/dummy.dir | 0 tix/win/tcl8.0/dummy.dir | 0 tix/win/tcl8.1/dummy.dir | 0 tix/win/tixWCmpt.c | 184 + tix/win/tixWinDraw.c | 310 + tix/win/tixWinInt.h | 20 + tix/win/tixWinMain.c | 303 + tix/win/tixWinPort.h | 43 + tix/win/tixWinWm.c | 24 + tix/win/tixWinXpm.c | 309 + tix/win/tkConsole41.c | 543 + tix/win/tkConsole42.c | 624 + tix/win/tkConsole80a1.c | 631 + tix/win/tkConsole80b1.c | 611 + tix/win/tkConsole81.c | 613 + tk/ChangeLog | 886 ++ tk/Makefile.in | 71 + tk/README | 393 + tk/bitmaps/error.bmp | 8 + tk/bitmaps/gray12.bmp | 6 + tk/bitmaps/gray25.bmp | 6 + tk/bitmaps/gray50.bmp | 6 + tk/bitmaps/gray75.bmp | 6 + tk/bitmaps/hourglass.bmp | 9 + tk/bitmaps/info.bmp | 5 + tk/bitmaps/questhead.bmp | 9 + tk/bitmaps/question.bmp | 10 + tk/bitmaps/warning.bmp | 5 + tk/changes | 4284 ++++++ tk/compat/license.terms | 39 + tk/compat/limits.h | 24 + tk/compat/stdlib.h | 45 + tk/compat/unistd.h | 84 + tk/configure | 983 ++ tk/configure.in | 28 + tk/doc/3DBorder.3 | 262 + tk/doc/BindTable.3 | 157 + tk/doc/CanvPsY.3 | 122 + tk/doc/CanvTkwin.3 | 161 + tk/doc/CanvTxtInfo.3 | 104 + tk/doc/Clipboard.3 | 80 + tk/doc/ClrSelect.3 | 42 + tk/doc/ConfigWidg.3 | 618 + tk/doc/ConfigWind.3 | 153 + tk/doc/CoordToWin.3 | 51 + tk/doc/CrtErrHdlr.3 | 145 + tk/doc/CrtGenHdlr.3 | 84 + tk/doc/CrtImgType.3 | 255 + tk/doc/CrtItemType.3 | 626 + tk/doc/CrtPhImgFmt.3 | 235 + tk/doc/CrtSelHdlr.3 | 120 + tk/doc/CrtWindow.3 | 142 + tk/doc/DeleteImg.3 | 35 + tk/doc/DrawFocHlt.3 | 40 + tk/doc/EventHndlr.3 | 79 + tk/doc/FindPhoto.3 | 202 + tk/doc/FontId.3 | 95 + tk/doc/FreeXId.3 | 52 + tk/doc/GeomReq.3 | 69 + tk/doc/GetAnchor.3 | 64 + tk/doc/GetBitmap.3 | 266 + tk/doc/GetCapStyl.3 | 63 + tk/doc/GetClrmap.3 | 73 + tk/doc/GetColor.3 | 146 + tk/doc/GetCursor.3 | 188 + tk/doc/GetFont.3 | 74 + tk/doc/GetGC.3 | 74 + tk/doc/GetImage.3 | 135 + tk/doc/GetJoinStl.3 | 62 + tk/doc/GetJustify.3 | 69 + tk/doc/GetOption.3 | 46 + tk/doc/GetPixels.3 | 76 + tk/doc/GetPixmap.3 | 56 + tk/doc/GetRelief.3 | 59 + tk/doc/GetRootCrd.3 | 43 + tk/doc/GetScroll.3 | 65 + tk/doc/GetSelect.3 | 79 + tk/doc/GetUid.3 | 50 + tk/doc/GetVRoot.3 | 49 + tk/doc/GetVisual.3 | 98 + tk/doc/HandleEvent.3 | 49 + tk/doc/IdToWindow.3 | 36 + tk/doc/ImgChanged.3 | 69 + tk/doc/InternAtom.3 | 58 + tk/doc/MainLoop.3 | 32 + tk/doc/MainWin.3 | 36 + tk/doc/MaintGeom.3 | 102 + tk/doc/ManageGeom.3 | 94 + tk/doc/MapWindow.3 | 53 + tk/doc/MeasureChar.3 | 130 + tk/doc/MoveToplev.3 | 55 + tk/doc/Name.3 | 82 + tk/doc/NameOfImg.3 | 34 + tk/doc/OwnSelect.3 | 52 + tk/doc/ParseArgv.3 | 351 + tk/doc/QWinEvent.3 | 42 + tk/doc/Restack.3 | 49 + tk/doc/RestrictEv.3 | 81 + tk/doc/SetAppName.3 | 65 + tk/doc/SetClass.3 | 61 + tk/doc/SetGrid.3 | 67 + tk/doc/SetVisual.3 | 54 + tk/doc/StrictMotif.3 | 41 + tk/doc/TextLayout.3 | 270 + tk/doc/Tk_Init.3 | 47 + tk/doc/Tk_Main.3 | 61 + tk/doc/WindowId.3 | 151 + tk/doc/bell.n | 34 + tk/doc/bind.n | 523 + tk/doc/bindtags.n | 81 + tk/doc/bitmap.n | 114 + tk/doc/button.n | 176 + tk/doc/canvas.n | 1577 +++ tk/doc/checkbutton.n | 238 + tk/doc/chooseColor.n | 49 + tk/doc/clipboard.n | 81 + tk/doc/destroy.n | 34 + tk/doc/dialog.n | 65 + tk/doc/entry.n | 417 + tk/doc/event.n | 352 + tk/doc/focus.n | 113 + tk/doc/focusNext.n | 60 + tk/doc/font.n | 285 + tk/doc/frame.n | 134 + tk/doc/getOpenFile.n | 157 + tk/doc/grab.n | 122 + tk/doc/grid.n | 337 + tk/doc/image.n | 90 + tk/doc/label.n | 103 + tk/doc/license.terms | 39 + tk/doc/listbox.n | 491 + tk/doc/loadTk.n | 76 + tk/doc/lower.n | 38 + tk/doc/man.macros | 236 + tk/doc/menu.n | 757 ++ tk/doc/menubar.n | 33 + tk/doc/menubutton.n | 193 + tk/doc/message.n | 147 + tk/doc/messageBox.n | 90 + tk/doc/option.n | 91 + tk/doc/optionMenu.n | 40 + tk/doc/options.n | 328 + tk/doc/pack-old.n | 196 + tk/doc/pack.n | 266 + tk/doc/palette.n | 73 + tk/doc/photo.n | 344 + tk/doc/place.n | 237 + tk/doc/popup.n | 33 + tk/doc/radiobutton.n | 233 + tk/doc/raise.n | 38 + tk/doc/scale.n | 246 + tk/doc/scrollbar.n | 340 + tk/doc/selection.n | 128 + tk/doc/send.n | 92 + tk/doc/text.n | 1621 +++ tk/doc/tk.n | 72 + tk/doc/tkerror.n | 38 + tk/doc/tkvars.n | 72 + tk/doc/tkwait.n | 51 + tk/doc/toplevel.n | 163 + tk/doc/winfo.n | 330 + tk/doc/wish.1 | 186 + tk/doc/wm.n | 503 + tk/generic/README | 5 + tk/generic/default.h | 29 + tk/generic/ks_names.h | 921 ++ tk/generic/tk.h | 1565 +++ tk/generic/tk3d.c | 950 ++ tk/generic/tk3d.h | 87 + tk/generic/tkArgv.c | 439 + tk/generic/tkAtom.c | 217 + tk/generic/tkBind.c | 4552 +++++++ tk/generic/tkBitmap.c | 630 + tk/generic/tkButton.c | 1358 ++ tk/generic/tkButton.h | 249 + tk/generic/tkCanvArc.c | 1717 +++ tk/generic/tkCanvBmap.c | 801 ++ tk/generic/tkCanvImg.c | 677 + tk/generic/tkCanvLine.c | 1623 +++ tk/generic/tkCanvPoly.c | 1000 ++ tk/generic/tkCanvPs.c | 1386 ++ tk/generic/tkCanvText.c | 1314 ++ tk/generic/tkCanvUtil.c | 376 + tk/generic/tkCanvWind.c | 862 ++ tk/generic/tkCanvas.c | 3829 ++++++ tk/generic/tkCanvas.h | 259 + tk/generic/tkClipboard.c | 606 + tk/generic/tkCmds.c | 1649 +++ tk/generic/tkColor.c | 524 + tk/generic/tkColor.h | 77 + tk/generic/tkConfig.c | 990 ++ tk/generic/tkConsole.c | 616 + tk/generic/tkCursor.c | 384 + tk/generic/tkEntry.c | 2318 ++++ tk/generic/tkError.c | 307 + tk/generic/tkEvent.c | 1043 ++ tk/generic/tkFileFilter.c | 486 + tk/generic/tkFileFilter.h | 92 + tk/generic/tkFocus.c | 999 ++ tk/generic/tkFont.c | 3040 +++++ tk/generic/tkFont.h | 220 + tk/generic/tkFrame.c | 939 ++ tk/generic/tkGC.c | 431 + tk/generic/tkGeometry.c | 582 + tk/generic/tkGet.c | 586 + tk/generic/tkGrab.c | 1535 +++ tk/generic/tkGrid.c | 2615 ++++ tk/generic/tkImage.c | 795 ++ tk/generic/tkImgBmap.c | 1082 ++ tk/generic/tkImgGIF.c | 1098 ++ tk/generic/tkImgPPM.c | 421 + tk/generic/tkImgPhoto.c | 4622 +++++++ tk/generic/tkImgUtil.c | 78 + tk/generic/tkInitScript.h | 56 + tk/generic/tkInt.h | 994 ++ tk/generic/tkListbox.c | 2337 ++++ tk/generic/tkMacWinMenu.c | 134 + tk/generic/tkMain.c | 390 + tk/generic/tkMenu.c | 3057 +++++ tk/generic/tkMenu.h | 549 + tk/generic/tkMenuDraw.c | 1039 ++ tk/generic/tkMenubutton.c | 872 ++ tk/generic/tkMenubutton.h | 215 + tk/generic/tkMessage.c | 849 ++ tk/generic/tkOption.c | 1397 ++ tk/generic/tkPack.c | 1727 +++ tk/generic/tkPlace.c | 1060 ++ tk/generic/tkPointer.c | 623 + tk/generic/tkPort.h | 36 + tk/generic/tkRectOval.c | 1032 ++ tk/generic/tkScale.c | 1145 ++ tk/generic/tkScale.h | 233 + tk/generic/tkScrollbar.c | 691 + tk/generic/tkScrollbar.h | 208 + tk/generic/tkSelect.c | 1341 ++ tk/generic/tkSelect.h | 184 + tk/generic/tkSquare.c | 587 + tk/generic/tkTest.c | 1135 ++ tk/generic/tkText.c | 2364 ++++ tk/generic/tkText.h | 857 ++ tk/generic/tkTextBTree.c | 3594 +++++ tk/generic/tkTextDisp.c | 5045 +++++++ tk/generic/tkTextImage.c | 898 ++ tk/generic/tkTextIndex.c | 840 ++ tk/generic/tkTextMark.c | 775 ++ tk/generic/tkTextTag.c | 1376 ++ tk/generic/tkTextWind.c | 1176 ++ tk/generic/tkTrig.c | 1467 +++ tk/generic/tkUtil.c | 348 + tk/generic/tkVisual.c | 540 + tk/generic/tkWindow.c | 2836 ++++ tk/library/bgerror.tcl | 99 + tk/library/button.tcl | 465 + tk/library/clrpick.tcl | 691 + tk/library/comdlg.tcl | 308 + tk/library/console.tcl | 481 + tk/library/demos/README | 46 + tk/library/demos/arrow.tcl | 238 + tk/library/demos/bind.tcl | 79 + tk/library/demos/bitmap.tcl | 55 + tk/library/demos/browse | 56 + tk/library/demos/button.tcl | 36 + tk/library/demos/check.tcl | 33 + tk/library/demos/clrpick.tcl | 56 + tk/library/demos/colors.tcl | 101 + tk/library/demos/cscroll.tcl | 96 + tk/library/demos/ctext.tcl | 146 + tk/library/demos/dialog1.tcl | 15 + tk/library/demos/dialog2.tcl | 19 + tk/library/demos/entry1.tcl | 36 + tk/library/demos/entry2.tcl | 48 + tk/library/demos/filebox.tcl | 70 + tk/library/demos/floor.tcl | 1370 ++ tk/library/demos/form.tcl | 40 + tk/library/demos/hello | 18 + tk/library/demos/hscale.tcl | 47 + tk/library/demos/icon.tcl | 52 + tk/library/demos/image1.tcl | 36 + tk/library/demos/image2.tcl | 80 + tk/library/demos/images/earth.gif | Bin 0 -> 51712 bytes tk/library/demos/images/earthris.gif | Bin 0 -> 6343 bytes tk/library/demos/images/face.bmp | 173 + tk/library/demos/images/flagdown.bmp | 27 + tk/library/demos/images/flagup.bmp | 27 + tk/library/demos/images/gray25.bmp | 6 + tk/library/demos/images/letters.bmp | 27 + tk/library/demos/images/noletter.bmp | 27 + tk/library/demos/images/pattern.bmp | 6 + tk/library/demos/images/tcllogo.gif | Bin 0 -> 2341 bytes tk/library/demos/images/teapot.ppm | 31 + tk/library/demos/items.tcl | 285 + tk/library/demos/ixset | 312 + tk/library/demos/label.tcl | 40 + tk/library/demos/license.terms | 39 + tk/library/demos/menu.tcl | 152 + tk/library/demos/menubu.tcl | 93 + tk/library/demos/msgbox.tcl | 65 + tk/library/demos/plot.tcl | 98 + tk/library/demos/puzzle.tcl | 73 + tk/library/demos/radio.tcl | 44 + tk/library/demos/rmt | 205 + tk/library/demos/rolodex | 196 + tk/library/demos/ruler.tcl | 173 + tk/library/demos/sayings.tcl | 46 + tk/library/demos/search.tcl | 141 + tk/library/demos/square | 55 + tk/library/demos/states.tcl | 45 + tk/library/demos/style.tcl | 152 + tk/library/demos/tclIndex | 67 + tk/library/demos/tcolor | 358 + tk/library/demos/text.tcl | 76 + tk/library/demos/timer | 40 + tk/library/demos/twind.tcl | 196 + tk/library/demos/vscale.tcl | 48 + tk/library/demos/widget | 391 + tk/library/dialog.tcl | 175 + tk/library/entry.tcl | 610 + tk/library/focus.tcl | 180 + tk/library/images/README | 12 + tk/library/images/logo100.gif | Bin 0 -> 2341 bytes tk/library/images/logo64.gif | Bin 0 -> 1670 bytes tk/library/images/logoLarge.gif | Bin 0 -> 11000 bytes tk/library/images/logoMed.gif | Bin 0 -> 3889 bytes tk/library/images/pwrdLogo100.gif | Bin 0 -> 4147 bytes tk/library/images/pwrdLogo150.gif | Bin 0 -> 6809 bytes tk/library/images/pwrdLogo175.gif | Bin 0 -> 7964 bytes tk/library/images/pwrdLogo200.gif | Bin 0 -> 8964 bytes tk/library/images/pwrdLogo75.gif | Bin 0 -> 3189 bytes tk/library/license.terms | 39 + tk/library/listbox.tcl | 452 + tk/library/menu.tcl | 1235 ++ tk/library/msgbox.tcl | 268 + tk/library/obsolete.tcl | 21 + tk/library/optMenu.tcl | 45 + tk/library/palette.tcl | 224 + tk/library/safetk.tcl | 204 + tk/library/scale.tcl | 265 + tk/library/scrlbar.tcl | 417 + tk/library/tclIndex | 244 + tk/library/tearoff.tcl | 145 + tk/library/text.tcl | 1010 ++ tk/library/tk.tcl | 192 + tk/library/tkfbox.tcl | 1665 +++ tk/library/xmfbox.tcl | 650 + tk/license.terms | 39 + tk/mac/MW_TkHeader.pch | 59 + tk/mac/README | 306 + tk/mac/bugs.doc | 45 + tk/mac/license.terms | 39 + tk/mac/tclets.tcl | 215 + tk/mac/tkMac.h | 81 + tk/mac/tkMacAppInit.c | 393 + tk/mac/tkMacApplication.r | 267 + tk/mac/tkMacBitmap.c | 268 + tk/mac/tkMacButton.c | 1443 ++ tk/mac/tkMacClipboard.c | 293 + tk/mac/tkMacColor.c | 493 + tk/mac/tkMacCursor.c | 392 + tk/mac/tkMacCursors.r | 130 + tk/mac/tkMacDefault.h | 462 + tk/mac/tkMacDialog.c | 939 ++ tk/mac/tkMacDraw.c | 1130 ++ tk/mac/tkMacEmbed.c | 1192 ++ tk/mac/tkMacFont.c | 678 + tk/mac/tkMacHLEvents.c | 437 + tk/mac/tkMacInit.c | 240 + tk/mac/tkMacInt.h | 296 + tk/mac/tkMacKeyboard.c | 384 + tk/mac/tkMacLibrary.r | 508 + tk/mac/tkMacMDEF.c | 116 + tk/mac/tkMacMDEF.r | 45 + tk/mac/tkMacMenu.c | 4302 ++++++ tk/mac/tkMacMenu.r | 47 + tk/mac/tkMacMenubutton.c | 339 + tk/mac/tkMacMenus.c | 346 + tk/mac/tkMacPort.h | 147 + tk/mac/tkMacRegion.c | 217 + tk/mac/tkMacResource.r | 505 + tk/mac/tkMacScale.c | 603 + tk/mac/tkMacScrlbr.c | 1057 ++ tk/mac/tkMacSend.c | 358 + tk/mac/tkMacShLib.exp | 765 ++ tk/mac/tkMacSubwindows.c | 1245 ++ tk/mac/tkMacTest.c | 81 + tk/mac/tkMacWindowMgr.c | 1630 +++ tk/mac/tkMacWm.c | 4233 ++++++ tk/mac/tkMacXCursors.r | 961 ++ tk/mac/tkMacXStubs.c | 709 + tk/tests/README | 30 + tk/tests/arc.tcl | 140 + tk/tests/bell.test | 37 + tk/tests/bevel.tcl | 128 + tk/tests/bgerror.test | 59 + tk/tests/bind.test | 2559 ++++ tk/tests/bugs.tcl | 30 + tk/tests/butGeom.tcl | 115 + tk/tests/butGeom2.tcl | 113 + tk/tests/button.test | 822 ++ tk/tests/canvImg.test | 397 + tk/tests/canvPs.test | 105 + tk/tests/canvPsArc.tcl | 45 + tk/tests/canvPsBmap.tcl | 71 + tk/tests/canvPsGrph.tcl | 87 + tk/tests/canvPsText.tcl | 83 + tk/tests/canvRect.test | 329 + tk/tests/canvText.test | 493 + tk/tests/canvWind.test | 133 + tk/tests/canvas.test | 238 + tk/tests/clipboard.test | 234 + tk/tests/clrpick.test | 215 + tk/tests/cmap.tcl | 61 + tk/tests/cmds.test | 43 + tk/tests/color.test | 167 + tk/tests/entry.test | 1269 ++ tk/tests/event.test | 41 + tk/tests/filebox.test | 302 + tk/tests/focus.test | 636 + tk/tests/focusTcl.test | 279 + tk/tests/font.test | 1092 ++ tk/tests/frame.test | 617 + tk/tests/geometry.test | 251 + tk/tests/grid.test | 1205 ++ tk/tests/id.test | 102 + tk/tests/image.test | 357 + tk/tests/imgBmap.test | 474 + tk/tests/imgPPM.test | 156 + tk/tests/imgPhoto.test | 423 + tk/tests/license.terms | 39 + tk/tests/listbox.test | 1658 +++ tk/tests/macEmbed.test | 297 + tk/tests/macFont.test | 182 + tk/tests/macMenu.test | 1565 +++ tk/tests/macWinMenu.test | 117 + tk/tests/macscrollbar.test | 101 + tk/tests/main.test | 31 + tk/tests/menu.test | 2385 ++++ tk/tests/menuDraw.test | 546 + tk/tests/menubut.test | 352 + tk/tests/msgbox.test | 157 + tk/tests/obj.test | 37 + tk/tests/oldpack.test | 508 + tk/tests/option.file1 | 17 + tk/tests/option.file2 | 2 + tk/tests/option.test | 232 + tk/tests/pack.test | 969 ++ tk/tests/place.test | 221 + tk/tests/raise.test | 299 + tk/tests/safe.test | 169 + tk/tests/scale.test | 801 ++ tk/tests/scrollbar.test | 665 + tk/tests/select.test | 987 ++ tk/tests/send.test | 656 + tk/tests/text.test | 1262 ++ tk/tests/textBTree.test | 897 ++ tk/tests/textDisp.test | 2868 ++++ tk/tests/textImage.test | 353 + tk/tests/textIndex.test | 349 + tk/tests/textMark.test | 222 + tk/tests/textTag.test | 756 ++ tk/tests/textWind.test | 826 ++ tk/tests/tk.test | 80 + tk/tests/unixButton.test | 182 + tk/tests/unixEmbed.test | 627 + tk/tests/unixFont.test | 293 + tk/tests/unixMenu.test | 969 ++ tk/tests/unixWm.test | 2358 ++++ tk/tests/util.test | 70 + tk/tests/visual.test | 312 + tk/tests/winButton.test | 154 + tk/tests/winClipboard.test | 47 + tk/tests/winFont.test | 185 + tk/tests/winMenu.test | 1030 ++ tk/tests/winWm.test | 219 + tk/tests/window.test | 137 + tk/tests/winfo.test | 367 + tk/testsuite/config/default.exp | 254 + tk/testsuite/tk.tests/tk-test.exp | 99 + tk/unix/ChangeLog | 230 + tk/unix/Makefile.in | 1061 ++ tk/unix/README | 125 + tk/unix/configure | 3335 +++++ tk/unix/configure.in | 553 + tk/unix/install-sh | 128 + tk/unix/license.terms | 39 + tk/unix/mkLinks | 878 ++ tk/unix/tkAppInit.c | 120 + tk/unix/tkConfig.sh.in | 77 + tk/unix/tkUnix.c | 79 + tk/unix/tkUnix3d.c | 448 + tk/unix/tkUnixButton.c | 478 + tk/unix/tkUnixColor.c | 424 + tk/unix/tkUnixCursor.c | 407 + tk/unix/tkUnixDefault.h | 451 + tk/unix/tkUnixDialog.c | 210 + tk/unix/tkUnixDraw.c | 171 + tk/unix/tkUnixEmbed.c | 1001 ++ tk/unix/tkUnixEvent.c | 498 + tk/unix/tkUnixFocus.c | 149 + tk/unix/tkUnixFont.c | 998 ++ tk/unix/tkUnixInit.c | 117 + tk/unix/tkUnixInt.h | 32 + tk/unix/tkUnixMenu.c | 1603 +++ tk/unix/tkUnixMenubu.c | 307 + tk/unix/tkUnixPort.h | 236 + tk/unix/tkUnixScale.c | 828 ++ tk/unix/tkUnixScrlbr.c | 476 + tk/unix/tkUnixSelect.c | 1189 ++ tk/unix/tkUnixSend.c | 1851 +++ tk/unix/tkUnixWm.c | 4820 +++++++ tk/unix/tkUnixXId.c | 537 + tk/win/Makefile.in | 646 + tk/win/README | 122 + tk/win/configure | 1258 ++ tk/win/configure.in | 110 + tk/win/license.terms | 39 + tk/win/makefile.bc | 340 + tk/win/makefile.vc | 440 + tk/win/mkd.bat | 21 + tk/win/rc/buttons.bmp | Bin 0 -> 846 bytes tk/win/rc/cursor00.cur | Bin 0 -> 326 bytes tk/win/rc/cursor02.cur | Bin 0 -> 326 bytes tk/win/rc/cursor04.cur | Bin 0 -> 326 bytes tk/win/rc/cursor06.cur | Bin 0 -> 326 bytes tk/win/rc/cursor08.cur | Bin 0 -> 326 bytes tk/win/rc/cursor0a.cur | Bin 0 -> 326 bytes tk/win/rc/cursor0c.cur | Bin 0 -> 326 bytes tk/win/rc/cursor0e.cur | Bin 0 -> 326 bytes tk/win/rc/cursor10.cur | Bin 0 -> 326 bytes tk/win/rc/cursor12.cur | Bin 0 -> 326 bytes tk/win/rc/cursor14.cur | Bin 0 -> 326 bytes tk/win/rc/cursor16.cur | Bin 0 -> 326 bytes tk/win/rc/cursor18.cur | Bin 0 -> 326 bytes tk/win/rc/cursor1a.cur | Bin 0 -> 326 bytes tk/win/rc/cursor1c.cur | Bin 0 -> 326 bytes tk/win/rc/cursor1e.cur | Bin 0 -> 326 bytes tk/win/rc/cursor20.cur | Bin 0 -> 326 bytes tk/win/rc/cursor22.cur | Bin 0 -> 326 bytes tk/win/rc/cursor24.cur | Bin 0 -> 326 bytes tk/win/rc/cursor26.cur | Bin 0 -> 326 bytes tk/win/rc/cursor28.cur | Bin 0 -> 326 bytes tk/win/rc/cursor2a.cur | Bin 0 -> 326 bytes tk/win/rc/cursor2c.cur | Bin 0 -> 326 bytes tk/win/rc/cursor2e.cur | Bin 0 -> 326 bytes tk/win/rc/cursor30.cur | Bin 0 -> 326 bytes tk/win/rc/cursor32.cur | Bin 0 -> 326 bytes tk/win/rc/cursor34.cur | Bin 0 -> 326 bytes tk/win/rc/cursor36.cur | Bin 0 -> 326 bytes tk/win/rc/cursor38.cur | Bin 0 -> 326 bytes tk/win/rc/cursor3a.cur | Bin 0 -> 326 bytes tk/win/rc/cursor3c.cur | Bin 0 -> 326 bytes tk/win/rc/cursor3e.cur | Bin 0 -> 326 bytes tk/win/rc/cursor40.cur | Bin 0 -> 326 bytes tk/win/rc/cursor42.cur | Bin 0 -> 326 bytes tk/win/rc/cursor44.cur | Bin 0 -> 326 bytes tk/win/rc/cursor46.cur | Bin 0 -> 326 bytes tk/win/rc/cursor48.cur | Bin 0 -> 326 bytes tk/win/rc/cursor4a.cur | Bin 0 -> 326 bytes tk/win/rc/cursor4c.cur | Bin 0 -> 326 bytes tk/win/rc/cursor4e.cur | Bin 0 -> 326 bytes tk/win/rc/cursor50.cur | Bin 0 -> 326 bytes tk/win/rc/cursor52.cur | Bin 0 -> 326 bytes tk/win/rc/cursor54.cur | Bin 0 -> 326 bytes tk/win/rc/cursor56.cur | Bin 0 -> 326 bytes tk/win/rc/cursor58.cur | Bin 0 -> 326 bytes tk/win/rc/cursor5a.cur | Bin 0 -> 326 bytes tk/win/rc/cursor5c.cur | Bin 0 -> 326 bytes tk/win/rc/cursor5e.cur | Bin 0 -> 326 bytes tk/win/rc/cursor60.cur | Bin 0 -> 326 bytes tk/win/rc/cursor62.cur | Bin 0 -> 326 bytes tk/win/rc/cursor64.cur | Bin 0 -> 326 bytes tk/win/rc/cursor66.cur | Bin 0 -> 326 bytes tk/win/rc/cursor68.cur | Bin 0 -> 326 bytes tk/win/rc/cursor6a.cur | Bin 0 -> 326 bytes tk/win/rc/cursor6c.cur | Bin 0 -> 326 bytes tk/win/rc/cursor6e.cur | Bin 0 -> 326 bytes tk/win/rc/cursor70.cur | Bin 0 -> 326 bytes tk/win/rc/cursor72.cur | Bin 0 -> 326 bytes tk/win/rc/cursor74.cur | Bin 0 -> 326 bytes tk/win/rc/cursor76.cur | Bin 0 -> 326 bytes tk/win/rc/cursor78.cur | Bin 0 -> 326 bytes tk/win/rc/cursor7a.cur | Bin 0 -> 326 bytes tk/win/rc/cursor7c.cur | Bin 0 -> 326 bytes tk/win/rc/cursor7e.cur | Bin 0 -> 326 bytes tk/win/rc/cursor80.cur | Bin 0 -> 326 bytes tk/win/rc/cursor82.cur | Bin 0 -> 326 bytes tk/win/rc/cursor84.cur | Bin 0 -> 326 bytes tk/win/rc/cursor86.cur | Bin 0 -> 326 bytes tk/win/rc/cursor88.cur | Bin 0 -> 326 bytes tk/win/rc/cursor8a.cur | Bin 0 -> 326 bytes tk/win/rc/cursor8c.cur | Bin 0 -> 326 bytes tk/win/rc/cursor8e.cur | Bin 0 -> 326 bytes tk/win/rc/cursor90.cur | Bin 0 -> 326 bytes tk/win/rc/cursor92.cur | Bin 0 -> 326 bytes tk/win/rc/cursor94.cur | Bin 0 -> 326 bytes tk/win/rc/cursor96.cur | Bin 0 -> 326 bytes tk/win/rc/cursor98.cur | Bin 0 -> 326 bytes tk/win/rc/cygnus.ico | Bin 0 -> 1398 bytes tk/win/rc/tk.ico | Bin 0 -> 1398 bytes tk/win/rc/tk.rc | 132 + tk/win/rc/wish.ico | Bin 0 -> 1398 bytes tk/win/rc/wish.rc | 44 + tk/win/rmd.bat | 25 + tk/win/stubs.c | 397 + tk/win/tk.def | 1056 ++ tk/win/tkWin.h | 64 + tk/win/tkWin32Dll.c | 101 + tk/win/tkWin3d.c | 535 + tk/win/tkWinButton.c | 870 ++ tk/win/tkWinClipboard.c | 291 + tk/win/tkWinColor.c | 643 + tk/win/tkWinCursor.c | 210 + tk/win/tkWinDefault.h | 457 + tk/win/tkWinDialog.c | 1136 ++ tk/win/tkWinDraw.c | 1264 ++ tk/win/tkWinEmbed.c | 645 + tk/win/tkWinFont.c | 689 + tk/win/tkWinImage.c | 329 + tk/win/tkWinInit.c | 121 + tk/win/tkWinInt.h | 202 + tk/win/tkWinKey.c | 381 + tk/win/tkWinMenu.c | 2699 ++++ tk/win/tkWinPixmap.c | 184 + tk/win/tkWinPointer.c | 477 + tk/win/tkWinPort.h | 135 + tk/win/tkWinRegion.c | 179 + tk/win/tkWinScrlbr.c | 745 ++ tk/win/tkWinSend.c | 86 + tk/win/tkWinWindow.c | 801 ++ tk/win/tkWinWm.c | 4260 ++++++ tk/win/tkWinX.c | 1088 ++ tk/win/winMain.c | 321 + tk/xlib/X11/X.h | 669 + tk/xlib/X11/Xatom.h | 79 + tk/xlib/X11/Xfuncproto.h | 60 + tk/xlib/X11/Xlib.h | 4317 ++++++ tk/xlib/X11/Xutil.h | 879 ++ tk/xlib/X11/cursorfont.h | 79 + tk/xlib/X11/keysym.h | 39 + tk/xlib/X11/keysymdef.h | 1169 ++ tk/xlib/X11/license.terms | 39 + tk/xlib/license.terms | 39 + tk/xlib/xbytes.h | 58 + tk/xlib/xcolors.c | 911 ++ tk/xlib/xdraw.c | 82 + tk/xlib/xgc.c | 353 + tk/xlib/ximage.c | 71 + tk/xlib/xutil.c | 116 + 1859 files changed, 591150 insertions(+) create mode 100644 itcl/ChangeLog create mode 100644 itcl/INCOMPATIBLE create mode 100644 itcl/Makefile.in create mode 100644 itcl/TODO create mode 100644 itcl/aclocal.m4 create mode 100755 itcl/config/config.guess create mode 100755 itcl/config/config.sub create mode 100755 itcl/config/install-sh create mode 100755 itcl/config/mkinstalldirs create mode 100755 itcl/configure create mode 100644 itcl/configure.in create mode 100644 itcl/doc/README create mode 100644 itcl/itcl/doc/Resolvers.3 create mode 100644 itcl/itcl/doc/body.n create mode 100644 itcl/itcl/doc/class.n create mode 100644 itcl/itcl/doc/code.n create mode 100644 itcl/itcl/doc/configbody.n create mode 100644 itcl/itcl/doc/delete.n create mode 100644 itcl/itcl/doc/ensemble.n create mode 100644 itcl/itcl/doc/find.n create mode 100644 itcl/itcl/doc/itcl.n create mode 100644 itcl/itcl/doc/itcl_class.n create mode 100644 itcl/itcl/doc/itcl_info.n create mode 100644 itcl/itcl/doc/itclsh.1 create mode 100644 itcl/itcl/doc/itclvars.n create mode 100644 itcl/itcl/doc/license.terms create mode 100644 itcl/itcl/doc/local.n create mode 100644 itcl/itcl/doc/man.macros create mode 100644 itcl/itcl/doc/scope.n create mode 100644 itcl/itcl/generic/itcl.h create mode 100644 itcl/itcl/generic/itclInt.h create mode 100644 itcl/itcl/generic/itcl_bicmds.c create mode 100644 itcl/itcl/generic/itcl_class.c create mode 100644 itcl/itcl/generic/itcl_cmds.c create mode 100644 itcl/itcl/generic/itcl_ensemble.c create mode 100644 itcl/itcl/generic/itcl_linkage.c create mode 100644 itcl/itcl/generic/itcl_methods.c create mode 100644 itcl/itcl/generic/itcl_migrate.c create mode 100644 itcl/itcl/generic/itcl_objects.c create mode 100644 itcl/itcl/generic/itcl_obsolete.c create mode 100644 itcl/itcl/generic/itcl_parse.c create mode 100644 itcl/itcl/generic/itcl_util.c create mode 100644 itcl/itcl/itclConfig.sh.in create mode 100644 itcl/itcl/library/itcl.tcl create mode 100644 itcl/itcl/license.terms create mode 100644 itcl/itcl/mac/itclMacApplication.r create mode 100644 itcl/itcl/mac/itclMacLibrary.r create mode 100644 itcl/itcl/mac/itclMacResource.r create mode 100644 itcl/itcl/mac/itclMacTclCode.r create mode 100644 itcl/itcl/mac/itclStaticApplication.r create mode 100644 itcl/itcl/mac/pkgIndex.tcl create mode 100644 itcl/itcl/mac/tclMacAppInit.c create mode 100644 itcl/itcl/tests/all create mode 100644 itcl/itcl/tests/basic.test create mode 100644 itcl/itcl/tests/body.test create mode 100644 itcl/itcl/tests/chain.test create mode 100644 itcl/itcl/tests/defs create mode 100644 itcl/itcl/tests/delete.test create mode 100644 itcl/itcl/tests/ensemble.test create mode 100644 itcl/itcl/tests/info.test create mode 100644 itcl/itcl/tests/inherit.test create mode 100644 itcl/itcl/tests/interp.test create mode 100644 itcl/itcl/tests/local.test create mode 100644 itcl/itcl/tests/methods.test create mode 100644 itcl/itcl/tests/mkindex.itcl create mode 100644 itcl/itcl/tests/mkindex.test create mode 100644 itcl/itcl/tests/namespace.test create mode 100644 itcl/itcl/tests/old/AAA.test create mode 100644 itcl/itcl/tests/old/Bar.tcl create mode 100644 itcl/itcl/tests/old/BarFoo.tcl create mode 100644 itcl/itcl/tests/old/Baz.tcl create mode 100644 itcl/itcl/tests/old/Foo.tcl create mode 100644 itcl/itcl/tests/old/FooBar.tcl create mode 100644 itcl/itcl/tests/old/Geek.tcl create mode 100644 itcl/itcl/tests/old/Mongrel.tcl create mode 100644 itcl/itcl/tests/old/VirtualErr.tcl create mode 100644 itcl/itcl/tests/old/all create mode 100644 itcl/itcl/tests/old/basic.test create mode 100644 itcl/itcl/tests/old/inherit.test create mode 100644 itcl/itcl/tests/old/tclIndex create mode 100644 itcl/itcl/tests/old/testlib.tcl create mode 100644 itcl/itcl/tests/old/toaster.test create mode 100644 itcl/itcl/tests/old/toasters/Appliance.tcl create mode 100644 itcl/itcl/tests/old/toasters/Hazard.tcl create mode 100644 itcl/itcl/tests/old/toasters/Outlet.tcl create mode 100644 itcl/itcl/tests/old/toasters/SmartToaster.tcl create mode 100644 itcl/itcl/tests/old/toasters/Toaster.tcl create mode 100644 itcl/itcl/tests/old/toasters/tclIndex create mode 100644 itcl/itcl/tests/old/toasters/usualway.tcl create mode 100644 itcl/itcl/tests/old/uplevel.test create mode 100644 itcl/itcl/tests/old/upvar.test create mode 100644 itcl/itcl/tests/protection.test create mode 100644 itcl/itcl/tests/scope.test create mode 100644 itcl/itcl/tests/tclIndex create mode 100644 itcl/itcl/unix/Makefile.in create mode 100755 itcl/itcl/unix/configure create mode 100644 itcl/itcl/unix/configure.in create mode 100644 itcl/itcl/unix/pkgIndex.tcl.in create mode 100644 itcl/itcl/unix/tclAppInit.c create mode 100644 itcl/itcl/win/Makefile.in create mode 100755 itcl/itcl/win/configure create mode 100644 itcl/itcl/win/configure.in create mode 100644 itcl/itcl/win/dllEntryPoint.c create mode 100644 itcl/itcl/win/itcl.rc create mode 100644 itcl/itcl/win/itclsh.rc create mode 100644 itcl/itcl/win/makefile.bc create mode 100644 itcl/itcl/win/makefile.vc create mode 100644 itcl/itcl/win/pkgIndex.tcl create mode 100644 itcl/itcl/win/tclAppInit.c create mode 100644 itcl/itk/demos/README create mode 100644 itcl/itk/demos/itkedit create mode 100644 itcl/itk/doc/Archetype.n create mode 100644 itcl/itk/doc/Toplevel.n create mode 100644 itcl/itk/doc/Widget.n create mode 100644 itcl/itk/doc/itk.n create mode 100644 itcl/itk/doc/itkvars.n create mode 100644 itcl/itk/doc/itkwish.1 create mode 100644 itcl/itk/doc/license.terms create mode 100644 itcl/itk/doc/man.macros create mode 100644 itcl/itk/doc/usual.n create mode 100644 itcl/itk/examples/Info.itk create mode 100644 itcl/itk/examples/MessageInfo.itk create mode 100644 itcl/itk/examples/README create mode 100644 itcl/itk/examples/TextDisplay.itk create mode 100644 itcl/itk/examples/TextInfo.itk create mode 100644 itcl/itk/examples/tclIndex create mode 100644 itcl/itk/examples/viewfile create mode 100644 itcl/itk/generic/itk.h create mode 100644 itcl/itk/generic/itk_archetype.c create mode 100644 itcl/itk/generic/itk_cmds.c create mode 100644 itcl/itk/generic/itk_option.c create mode 100644 itcl/itk/generic/itk_util.c create mode 100644 itcl/itk/itkConfig.sh.in create mode 100644 itcl/itk/library/Archetype.itk create mode 100644 itcl/itk/library/Toplevel.itk create mode 100644 itcl/itk/library/Widget.itk create mode 100644 itcl/itk/library/itk.tcl create mode 100644 itcl/itk/library/tclIndex create mode 100644 itcl/itk/license.terms create mode 100644 itcl/itk/mac/MW_ItkHeader.pch create mode 100644 itcl/itk/mac/itkMacApplication.r create mode 100644 itcl/itk/mac/itkMacLibrary.r create mode 100644 itcl/itk/mac/itkMacResource.r create mode 100644 itcl/itk/mac/itkMacTclCode.r create mode 100644 itcl/itk/mac/itkStaticApplication.r create mode 100644 itcl/itk/mac/pkgIndex.tcl create mode 100644 itcl/itk/mac/tclIndex create mode 100644 itcl/itk/mac/tkMacAppInit.c create mode 100644 itcl/itk/tests/all create mode 100644 itcl/itk/tests/defs create mode 100644 itcl/itk/tests/interp.test create mode 100644 itcl/itk/tests/option.test create mode 100644 itcl/itk/tests/privacy.test create mode 100644 itcl/itk/tests/public.test create mode 100644 itcl/itk/tests/toplevel.test create mode 100644 itcl/itk/tests/widget.test create mode 100644 itcl/itk/unix/Makefile.in create mode 100755 itcl/itk/unix/configure create mode 100644 itcl/itk/unix/configure.in create mode 100644 itcl/itk/unix/pkgIndex.tcl.in create mode 100644 itcl/itk/unix/tkAppInit.c create mode 100644 itcl/itk/win/Makefile.in create mode 100644 itcl/itk/win/Makefile.in_first create mode 100755 itcl/itk/win/configure create mode 100644 itcl/itk/win/configure.in create mode 100644 itcl/itk/win/dllEntryPoint.c create mode 100644 itcl/itk/win/makefile.bc create mode 100644 itcl/itk/win/makefile.vc create mode 100644 itcl/itk/win/pkgIndex.tcl create mode 100644 itcl/itk/win/rc/cursor00.cur create mode 100644 itcl/itk/win/rc/cursor02.cur create mode 100644 itcl/itk/win/rc/cursor04.cur create mode 100644 itcl/itk/win/rc/cursor06.cur create mode 100644 itcl/itk/win/rc/cursor08.cur create mode 100644 itcl/itk/win/rc/cursor0a.cur create mode 100644 itcl/itk/win/rc/cursor0c.cur create mode 100644 itcl/itk/win/rc/cursor0e.cur create mode 100644 itcl/itk/win/rc/cursor10.cur create mode 100644 itcl/itk/win/rc/cursor12.cur create mode 100644 itcl/itk/win/rc/cursor14.cur create mode 100644 itcl/itk/win/rc/cursor16.cur create mode 100644 itcl/itk/win/rc/cursor18.cur create mode 100644 itcl/itk/win/rc/cursor1a.cur create mode 100644 itcl/itk/win/rc/cursor1c.cur create mode 100644 itcl/itk/win/rc/cursor1e.cur create mode 100644 itcl/itk/win/rc/cursor20.cur create mode 100644 itcl/itk/win/rc/cursor22.cur create mode 100644 itcl/itk/win/rc/cursor24.cur create mode 100644 itcl/itk/win/rc/cursor26.cur create mode 100644 itcl/itk/win/rc/cursor28.cur create mode 100644 itcl/itk/win/rc/cursor2a.cur create mode 100644 itcl/itk/win/rc/cursor2c.cur create mode 100644 itcl/itk/win/rc/cursor2e.cur create mode 100644 itcl/itk/win/rc/cursor30.cur create mode 100644 itcl/itk/win/rc/cursor32.cur create mode 100644 itcl/itk/win/rc/cursor34.cur create mode 100644 itcl/itk/win/rc/cursor36.cur create mode 100644 itcl/itk/win/rc/cursor38.cur create mode 100644 itcl/itk/win/rc/cursor3a.cur create mode 100644 itcl/itk/win/rc/cursor3c.cur create mode 100644 itcl/itk/win/rc/cursor3e.cur create mode 100644 itcl/itk/win/rc/cursor40.cur create mode 100644 itcl/itk/win/rc/cursor42.cur create mode 100644 itcl/itk/win/rc/cursor44.cur create mode 100644 itcl/itk/win/rc/cursor46.cur create mode 100644 itcl/itk/win/rc/cursor48.cur create mode 100644 itcl/itk/win/rc/cursor4a.cur create mode 100644 itcl/itk/win/rc/cursor4c.cur create mode 100644 itcl/itk/win/rc/cursor4e.cur create mode 100644 itcl/itk/win/rc/cursor50.cur create mode 100644 itcl/itk/win/rc/cursor52.cur create mode 100644 itcl/itk/win/rc/cursor54.cur create mode 100644 itcl/itk/win/rc/cursor56.cur create mode 100644 itcl/itk/win/rc/cursor58.cur create mode 100644 itcl/itk/win/rc/cursor5a.cur create mode 100644 itcl/itk/win/rc/cursor5c.cur create mode 100644 itcl/itk/win/rc/cursor5e.cur create mode 100644 itcl/itk/win/rc/cursor60.cur create mode 100644 itcl/itk/win/rc/cursor62.cur create mode 100644 itcl/itk/win/rc/cursor64.cur create mode 100644 itcl/itk/win/rc/cursor66.cur create mode 100644 itcl/itk/win/rc/cursor68.cur create mode 100644 itcl/itk/win/rc/cursor6a.cur create mode 100644 itcl/itk/win/rc/cursor6c.cur create mode 100644 itcl/itk/win/rc/cursor6e.cur create mode 100644 itcl/itk/win/rc/cursor70.cur create mode 100644 itcl/itk/win/rc/cursor72.cur create mode 100644 itcl/itk/win/rc/cursor74.cur create mode 100644 itcl/itk/win/rc/cursor76.cur create mode 100644 itcl/itk/win/rc/cursor78.cur create mode 100644 itcl/itk/win/rc/cursor7a.cur create mode 100644 itcl/itk/win/rc/cursor7c.cur create mode 100644 itcl/itk/win/rc/cursor7e.cur create mode 100644 itcl/itk/win/rc/cursor80.cur create mode 100644 itcl/itk/win/rc/cursor82.cur create mode 100644 itcl/itk/win/rc/cursor84.cur create mode 100644 itcl/itk/win/rc/cursor86.cur create mode 100644 itcl/itk/win/rc/cursor88.cur create mode 100644 itcl/itk/win/rc/cursor8a.cur create mode 100644 itcl/itk/win/rc/cursor8c.cur create mode 100644 itcl/itk/win/rc/cursor8e.cur create mode 100644 itcl/itk/win/rc/cursor90.cur create mode 100644 itcl/itk/win/rc/cursor92.cur create mode 100644 itcl/itk/win/rc/cursor94.cur create mode 100644 itcl/itk/win/rc/cursor96.cur create mode 100644 itcl/itk/win/rc/cursor98.cur create mode 100644 itcl/itk/win/rc/itk.ico create mode 100644 itcl/itk/win/rc/itk.rc create mode 100644 itcl/itk/win/rc/itkwish.rc create mode 100644 itcl/itk/win/winMain.c create mode 100644 itcl/iwidgets3.0.0/CHANGES create mode 100644 itcl/iwidgets3.0.0/README create mode 100755 itcl/iwidgets3.0.0/catalog create mode 100755 itcl/iwidgets3.0.0/demos/buttonbox create mode 100755 itcl/iwidgets3.0.0/demos/calendar create mode 100755 itcl/iwidgets3.0.0/demos/canvasprintdialog create mode 100755 itcl/iwidgets3.0.0/demos/checkbox create mode 100755 itcl/iwidgets3.0.0/demos/combobox create mode 100755 itcl/iwidgets3.0.0/demos/dateentry create mode 100755 itcl/iwidgets3.0.0/demos/datefield create mode 100644 itcl/iwidgets3.0.0/demos/demo.html create mode 100755 itcl/iwidgets3.0.0/demos/dialog create mode 100755 itcl/iwidgets3.0.0/demos/dialogshell create mode 100755 itcl/iwidgets3.0.0/demos/disjointlistbox create mode 100755 itcl/iwidgets3.0.0/demos/entryfield create mode 100755 itcl/iwidgets3.0.0/demos/extfileselectionbox create mode 100644 itcl/iwidgets3.0.0/demos/extfileselectiondialog create mode 100644 itcl/iwidgets3.0.0/demos/feedback create mode 100755 itcl/iwidgets3.0.0/demos/fileselectionbox create mode 100755 itcl/iwidgets3.0.0/demos/fileselectiondialog create mode 100755 itcl/iwidgets3.0.0/demos/finddialog create mode 100755 itcl/iwidgets3.0.0/demos/hierarchy create mode 100644 itcl/iwidgets3.0.0/demos/html/buttonbox.n.html create mode 100644 itcl/iwidgets3.0.0/demos/html/canvasprintbox.n.html create mode 100644 itcl/iwidgets3.0.0/demos/html/canvasprintdialog.n.html create mode 100644 itcl/iwidgets3.0.0/demos/html/combobox.n.html create mode 100644 itcl/iwidgets3.0.0/demos/html/dialog.n.html create mode 100644 itcl/iwidgets3.0.0/demos/html/dialogshell.n.html create mode 100644 itcl/iwidgets3.0.0/demos/html/entryfield.n.html create mode 100644 itcl/iwidgets3.0.0/demos/html/feedback.n.html create mode 100644 itcl/iwidgets3.0.0/demos/html/fileselectionbox.n.html create mode 100644 itcl/iwidgets3.0.0/demos/html/fileselectiondialog.n.html create mode 100644 itcl/iwidgets3.0.0/demos/html/hyperhelp.n.html create mode 100644 itcl/iwidgets3.0.0/demos/html/iwidgets2.2.0UserCmds.html create mode 100644 itcl/iwidgets3.0.0/demos/html/labeledwidget.n.html create mode 100644 itcl/iwidgets3.0.0/demos/html/menubar.n.html create mode 100644 itcl/iwidgets3.0.0/demos/html/messagedialog.n.html create mode 100644 itcl/iwidgets3.0.0/demos/html/notebook.n.html create mode 100644 itcl/iwidgets3.0.0/demos/html/optionmenu.n.html create mode 100644 itcl/iwidgets3.0.0/demos/html/panedwindow.n.html create mode 100644 itcl/iwidgets3.0.0/demos/html/promptdialog.n.html create mode 100644 itcl/iwidgets3.0.0/demos/html/pushbutton.n.html create mode 100644 itcl/iwidgets3.0.0/demos/html/radiobox.n.html create mode 100644 itcl/iwidgets3.0.0/demos/html/scrolledcanvas.n.html create mode 100644 itcl/iwidgets3.0.0/demos/html/scrolledframe.n.html create mode 100644 itcl/iwidgets3.0.0/demos/html/scrolledhtml.n.html create mode 100644 itcl/iwidgets3.0.0/demos/html/scrolledlistbox.n.html create mode 100644 itcl/iwidgets3.0.0/demos/html/scrolledtext.n.html create mode 100644 itcl/iwidgets3.0.0/demos/html/selectionbox.n.html create mode 100644 itcl/iwidgets3.0.0/demos/html/selectiondialog.n.html create mode 100644 itcl/iwidgets3.0.0/demos/html/shell.n.html create mode 100644 itcl/iwidgets3.0.0/demos/html/spindate.n.html create mode 100644 itcl/iwidgets3.0.0/demos/html/spinint.n.html create mode 100644 itcl/iwidgets3.0.0/demos/html/spinner.n.html create mode 100644 itcl/iwidgets3.0.0/demos/html/spintime.n.html create mode 100644 itcl/iwidgets3.0.0/demos/html/tabnotebook.n.html create mode 100644 itcl/iwidgets3.0.0/demos/html/tabset.n.html create mode 100644 itcl/iwidgets3.0.0/demos/html/toolbar.n.html create mode 100755 itcl/iwidgets3.0.0/demos/hyperhelp create mode 100644 itcl/iwidgets3.0.0/demos/images/box.xbm create mode 100644 itcl/iwidgets3.0.0/demos/images/clear.gif create mode 100644 itcl/iwidgets3.0.0/demos/images/close.gif create mode 100644 itcl/iwidgets3.0.0/demos/images/copy.gif create mode 100644 itcl/iwidgets3.0.0/demos/images/cut.gif create mode 100644 itcl/iwidgets3.0.0/demos/images/exit.gif create mode 100644 itcl/iwidgets3.0.0/demos/images/find.gif create mode 100644 itcl/iwidgets3.0.0/demos/images/help.gif create mode 100644 itcl/iwidgets3.0.0/demos/images/line.xbm create mode 100644 itcl/iwidgets3.0.0/demos/images/mag.gif create mode 100644 itcl/iwidgets3.0.0/demos/images/new.gif create mode 100644 itcl/iwidgets3.0.0/demos/images/open.gif create mode 100644 itcl/iwidgets3.0.0/demos/images/oval.xbm create mode 100644 itcl/iwidgets3.0.0/demos/images/paste.gif create mode 100644 itcl/iwidgets3.0.0/demos/images/points.xbm create mode 100644 itcl/iwidgets3.0.0/demos/images/poly.gif create mode 100644 itcl/iwidgets3.0.0/demos/images/print.gif create mode 100644 itcl/iwidgets3.0.0/demos/images/ruler.gif create mode 100644 itcl/iwidgets3.0.0/demos/images/save.gif create mode 100644 itcl/iwidgets3.0.0/demos/images/select.gif create mode 100644 itcl/iwidgets3.0.0/demos/images/text.xbm create mode 100644 itcl/iwidgets3.0.0/demos/iwidgets.gif create mode 100755 itcl/iwidgets3.0.0/demos/labeledframe create mode 100755 itcl/iwidgets3.0.0/demos/labeledwidget create mode 100644 itcl/iwidgets3.0.0/demos/mainwindow create mode 100755 itcl/iwidgets3.0.0/demos/menubar create mode 100755 itcl/iwidgets3.0.0/demos/messagebox create mode 100755 itcl/iwidgets3.0.0/demos/messagedialog create mode 100755 itcl/iwidgets3.0.0/demos/notebook create mode 100755 itcl/iwidgets3.0.0/demos/optionmenu create mode 100755 itcl/iwidgets3.0.0/demos/panedwindow create mode 100755 itcl/iwidgets3.0.0/demos/promptdialog create mode 100755 itcl/iwidgets3.0.0/demos/pushbutton create mode 100755 itcl/iwidgets3.0.0/demos/radiobox create mode 100755 itcl/iwidgets3.0.0/demos/scrolledcanvas create mode 100755 itcl/iwidgets3.0.0/demos/scrolledframe create mode 100755 itcl/iwidgets3.0.0/demos/scrolledhtml create mode 100755 itcl/iwidgets3.0.0/demos/scrolledlistbox create mode 100755 itcl/iwidgets3.0.0/demos/scrolledtext create mode 100755 itcl/iwidgets3.0.0/demos/selectionbox create mode 100755 itcl/iwidgets3.0.0/demos/selectiondialog create mode 100755 itcl/iwidgets3.0.0/demos/spindate create mode 100755 itcl/iwidgets3.0.0/demos/spinint create mode 100755 itcl/iwidgets3.0.0/demos/spinner create mode 100755 itcl/iwidgets3.0.0/demos/spintime create mode 100755 itcl/iwidgets3.0.0/demos/tabnotebook create mode 100755 itcl/iwidgets3.0.0/demos/tabset create mode 100755 itcl/iwidgets3.0.0/demos/timeentry create mode 100755 itcl/iwidgets3.0.0/demos/timefield create mode 100755 itcl/iwidgets3.0.0/demos/toolbar create mode 100644 itcl/iwidgets3.0.0/demos/watch create mode 100644 itcl/iwidgets3.0.0/doc/buttonbox.n create mode 100644 itcl/iwidgets3.0.0/doc/calendar.n create mode 100644 itcl/iwidgets3.0.0/doc/canvasprintbox.n create mode 100644 itcl/iwidgets3.0.0/doc/canvasprintdialog.n create mode 100755 itcl/iwidgets3.0.0/doc/checkbox.n create mode 100644 itcl/iwidgets3.0.0/doc/combobox.n create mode 100644 itcl/iwidgets3.0.0/doc/dateentry.n create mode 100644 itcl/iwidgets3.0.0/doc/datefield.n create mode 100644 itcl/iwidgets3.0.0/doc/dialog.n create mode 100644 itcl/iwidgets3.0.0/doc/dialogshell.n create mode 100755 itcl/iwidgets3.0.0/doc/disjointlistbox.n create mode 100644 itcl/iwidgets3.0.0/doc/entryfield.n create mode 100644 itcl/iwidgets3.0.0/doc/extfileselectionbox.n create mode 100644 itcl/iwidgets3.0.0/doc/extfileselectiondialog.n create mode 100644 itcl/iwidgets3.0.0/doc/feedback.n create mode 100644 itcl/iwidgets3.0.0/doc/fileselectionbox.n create mode 100644 itcl/iwidgets3.0.0/doc/fileselectiondialog.n create mode 100644 itcl/iwidgets3.0.0/doc/finddialog.n create mode 100644 itcl/iwidgets3.0.0/doc/hierarchy.n create mode 100644 itcl/iwidgets3.0.0/doc/hyperhelp.n create mode 100644 itcl/iwidgets3.0.0/doc/iwidgets.ps create mode 100644 itcl/iwidgets3.0.0/doc/labeledframe.n create mode 100644 itcl/iwidgets3.0.0/doc/labeledwidget.n create mode 100644 itcl/iwidgets3.0.0/doc/mainwindow.n create mode 100644 itcl/iwidgets3.0.0/doc/man.macros create mode 100644 itcl/iwidgets3.0.0/doc/menubar.n create mode 100644 itcl/iwidgets3.0.0/doc/messagebox.n create mode 100644 itcl/iwidgets3.0.0/doc/messagedialog.n create mode 100755 itcl/iwidgets3.0.0/doc/mkitclman create mode 100644 itcl/iwidgets3.0.0/doc/notebook.n create mode 100644 itcl/iwidgets3.0.0/doc/optionmenu.n create mode 100644 itcl/iwidgets3.0.0/doc/panedwindow.n create mode 100644 itcl/iwidgets3.0.0/doc/promptdialog.n create mode 100644 itcl/iwidgets3.0.0/doc/pushbutton.n create mode 100644 itcl/iwidgets3.0.0/doc/radiobox.n create mode 100755 itcl/iwidgets3.0.0/doc/scopedobject.n create mode 100755 itcl/iwidgets3.0.0/doc/scopedobject.n.backup create mode 100644 itcl/iwidgets3.0.0/doc/scrolledcanvas.n create mode 100644 itcl/iwidgets3.0.0/doc/scrolledframe.n create mode 100644 itcl/iwidgets3.0.0/doc/scrolledhtml.n create mode 100644 itcl/iwidgets3.0.0/doc/scrolledlistbox.n create mode 100644 itcl/iwidgets3.0.0/doc/scrolledtext.n create mode 100644 itcl/iwidgets3.0.0/doc/selectionbox.n create mode 100644 itcl/iwidgets3.0.0/doc/selectiondialog.n create mode 100644 itcl/iwidgets3.0.0/doc/shell.n create mode 100644 itcl/iwidgets3.0.0/doc/spindate.n create mode 100644 itcl/iwidgets3.0.0/doc/spinint.n create mode 100644 itcl/iwidgets3.0.0/doc/spinner.n create mode 100644 itcl/iwidgets3.0.0/doc/spintime.n create mode 100644 itcl/iwidgets3.0.0/doc/tabnotebook.n create mode 100644 itcl/iwidgets3.0.0/doc/tabset.n create mode 100644 itcl/iwidgets3.0.0/doc/timeentry.n create mode 100755 itcl/iwidgets3.0.0/doc/timefield.n create mode 100755 itcl/iwidgets3.0.0/doc/tk2html create mode 100755 itcl/iwidgets3.0.0/doc/tk2html.awk create mode 100755 itcl/iwidgets3.0.0/doc/tk2html.perl create mode 100755 itcl/iwidgets3.0.0/doc/tk2html2.awk create mode 100644 itcl/iwidgets3.0.0/doc/toolbar.n create mode 100755 itcl/iwidgets3.0.0/doc/watch.n create mode 100644 itcl/iwidgets3.0.0/generic/buttonbox.itk create mode 100644 itcl/iwidgets3.0.0/generic/calendar.itk create mode 100644 itcl/iwidgets3.0.0/generic/canvasprintbox.itk create mode 100644 itcl/iwidgets3.0.0/generic/canvasprintdialog.itk create mode 100755 itcl/iwidgets3.0.0/generic/checkbox.itk create mode 100644 itcl/iwidgets3.0.0/generic/colors.itcl create mode 100644 itcl/iwidgets3.0.0/generic/combobox.itk create mode 100644 itcl/iwidgets3.0.0/generic/dateentry.itk create mode 100644 itcl/iwidgets3.0.0/generic/datefield.itk create mode 100644 itcl/iwidgets3.0.0/generic/dialog.itk create mode 100644 itcl/iwidgets3.0.0/generic/dialogshell.itk create mode 100755 itcl/iwidgets3.0.0/generic/disjointlistbox.itk create mode 100644 itcl/iwidgets3.0.0/generic/entryfield.itk create mode 100644 itcl/iwidgets3.0.0/generic/extfileselectionbox.itk create mode 100644 itcl/iwidgets3.0.0/generic/extfileselectiondialog.itk create mode 100644 itcl/iwidgets3.0.0/generic/feedback.itk create mode 100644 itcl/iwidgets3.0.0/generic/fileselectionbox.itk create mode 100644 itcl/iwidgets3.0.0/generic/fileselectiondialog.itk create mode 100755 itcl/iwidgets3.0.0/generic/finddialog.itk create mode 100644 itcl/iwidgets3.0.0/generic/hierarchy.itk create mode 100644 itcl/iwidgets3.0.0/generic/hyperhelp.itk create mode 100644 itcl/iwidgets3.0.0/generic/labeledframe.itk create mode 100644 itcl/iwidgets3.0.0/generic/labeledwidget.itk create mode 100644 itcl/iwidgets3.0.0/generic/mainwindow.itk create mode 100644 itcl/iwidgets3.0.0/generic/menubar.itk create mode 100644 itcl/iwidgets3.0.0/generic/messagebox.itk create mode 100644 itcl/iwidgets3.0.0/generic/messagedialog.itk create mode 100644 itcl/iwidgets3.0.0/generic/notebook.itk create mode 100644 itcl/iwidgets3.0.0/generic/optionmenu.itk create mode 100644 itcl/iwidgets3.0.0/generic/pane.itk create mode 100644 itcl/iwidgets3.0.0/generic/panedwindow.itk create mode 100644 itcl/iwidgets3.0.0/generic/promptdialog.itk create mode 100644 itcl/iwidgets3.0.0/generic/pushbutton.itk create mode 100644 itcl/iwidgets3.0.0/generic/radiobox.itk create mode 100755 itcl/iwidgets3.0.0/generic/regexpfield.itk create mode 100644 itcl/iwidgets3.0.0/generic/roman.itcl create mode 100755 itcl/iwidgets3.0.0/generic/scopedobject.itcl create mode 100644 itcl/iwidgets3.0.0/generic/scrolledcanvas.itk create mode 100644 itcl/iwidgets3.0.0/generic/scrolledframe.itk create mode 100644 itcl/iwidgets3.0.0/generic/scrolledhtml.itk create mode 100644 itcl/iwidgets3.0.0/generic/scrolledlistbox.itk create mode 100644 itcl/iwidgets3.0.0/generic/scrolledtext.itk create mode 100644 itcl/iwidgets3.0.0/generic/scrolledwidget.itk create mode 100644 itcl/iwidgets3.0.0/generic/selectionbox.itk create mode 100644 itcl/iwidgets3.0.0/generic/selectiondialog.itk create mode 100644 itcl/iwidgets3.0.0/generic/shell.itk create mode 100644 itcl/iwidgets3.0.0/generic/spindate.itk create mode 100644 itcl/iwidgets3.0.0/generic/spinint.itk create mode 100644 itcl/iwidgets3.0.0/generic/spinner.itk create mode 100644 itcl/iwidgets3.0.0/generic/spintime.itk create mode 100644 itcl/iwidgets3.0.0/generic/tabnotebook.itk create mode 100644 itcl/iwidgets3.0.0/generic/tabset.itk create mode 100644 itcl/iwidgets3.0.0/generic/tclIndex create mode 100644 itcl/iwidgets3.0.0/generic/timeentry.itk create mode 100644 itcl/iwidgets3.0.0/generic/timefield.itk create mode 100644 itcl/iwidgets3.0.0/generic/toolbar.itk create mode 100644 itcl/iwidgets3.0.0/generic/unknownimage.gif create mode 100755 itcl/iwidgets3.0.0/generic/watch.itk create mode 100644 itcl/iwidgets3.0.0/incoming/README create mode 100644 itcl/iwidgets3.0.0/incoming/doc/man.macros create mode 100644 itcl/iwidgets3.0.0/incoming/tests/all create mode 100644 itcl/iwidgets3.0.0/incoming/tests/defs create mode 100644 itcl/iwidgets3.0.0/license.terms create mode 100644 itcl/iwidgets3.0.0/outgoing/README create mode 100644 itcl/iwidgets3.0.0/tests/all create mode 100644 itcl/iwidgets3.0.0/tests/buttonbox.test create mode 100644 itcl/iwidgets3.0.0/tests/calendar.test create mode 100644 itcl/iwidgets3.0.0/tests/canvasprintbox.test create mode 100644 itcl/iwidgets3.0.0/tests/canvasprintdialog.test create mode 100755 itcl/iwidgets3.0.0/tests/checkbox.test create mode 100644 itcl/iwidgets3.0.0/tests/combobox.test create mode 100644 itcl/iwidgets3.0.0/tests/dateentry.test create mode 100644 itcl/iwidgets3.0.0/tests/datefield.test create mode 100644 itcl/iwidgets3.0.0/tests/defs create mode 100644 itcl/iwidgets3.0.0/tests/dialog.test create mode 100644 itcl/iwidgets3.0.0/tests/dialogshell.test create mode 100755 itcl/iwidgets3.0.0/tests/disjointlistbox.test create mode 100644 itcl/iwidgets3.0.0/tests/entryfield.test create mode 100644 itcl/iwidgets3.0.0/tests/extfileselectionbox.test create mode 100644 itcl/iwidgets3.0.0/tests/extfileselectiondialog.test create mode 100644 itcl/iwidgets3.0.0/tests/feedback.test create mode 100644 itcl/iwidgets3.0.0/tests/fileselectionbox.test create mode 100644 itcl/iwidgets3.0.0/tests/fileselectiondialog.test create mode 100644 itcl/iwidgets3.0.0/tests/finddialog.test create mode 100644 itcl/iwidgets3.0.0/tests/hierarchy.test create mode 100644 itcl/iwidgets3.0.0/tests/hyperhelp.html create mode 100644 itcl/iwidgets3.0.0/tests/hyperhelp.test create mode 100644 itcl/iwidgets3.0.0/tests/labeledframe.test create mode 100644 itcl/iwidgets3.0.0/tests/labeledwidget.test create mode 100644 itcl/iwidgets3.0.0/tests/menubar.test create mode 100644 itcl/iwidgets3.0.0/tests/messagebox.test create mode 100644 itcl/iwidgets3.0.0/tests/messagedialog.test create mode 100644 itcl/iwidgets3.0.0/tests/notebook.test create mode 100644 itcl/iwidgets3.0.0/tests/optionmenu.test create mode 100644 itcl/iwidgets3.0.0/tests/panedwindow.test create mode 100644 itcl/iwidgets3.0.0/tests/promptdialog.test create mode 100644 itcl/iwidgets3.0.0/tests/pushbutton.test create mode 100644 itcl/iwidgets3.0.0/tests/radiobox.test create mode 100755 itcl/iwidgets3.0.0/tests/regexpfield.test create mode 100644 itcl/iwidgets3.0.0/tests/scrolledcanvas.test create mode 100644 itcl/iwidgets3.0.0/tests/scrolledframe.test create mode 100644 itcl/iwidgets3.0.0/tests/scrolledhtml.test create mode 100644 itcl/iwidgets3.0.0/tests/scrolledlistbox.test create mode 100644 itcl/iwidgets3.0.0/tests/scrolledtext.test create mode 100644 itcl/iwidgets3.0.0/tests/selectionbox.test create mode 100644 itcl/iwidgets3.0.0/tests/selectiondialog.test create mode 100644 itcl/iwidgets3.0.0/tests/shell.test create mode 100644 itcl/iwidgets3.0.0/tests/spindate.test create mode 100644 itcl/iwidgets3.0.0/tests/spinint.test create mode 100644 itcl/iwidgets3.0.0/tests/spinner.test create mode 100644 itcl/iwidgets3.0.0/tests/spintime.test create mode 100644 itcl/iwidgets3.0.0/tests/tabnotebook.test create mode 100644 itcl/iwidgets3.0.0/tests/tabset.test create mode 100755 itcl/iwidgets3.0.0/tests/timeentry.test create mode 100755 itcl/iwidgets3.0.0/tests/timefield.test create mode 100644 itcl/iwidgets3.0.0/tests/toolbar.test create mode 100644 itcl/iwidgets3.0.0/tests/usual.test create mode 100755 itcl/iwidgets3.0.0/tests/watch.test create mode 100644 itcl/iwidgets3.0.0/unix/Makefile.in create mode 100755 itcl/iwidgets3.0.0/unix/configure create mode 100644 itcl/iwidgets3.0.0/unix/configure.in create mode 100644 itcl/iwidgets3.0.0/unix/iwidgets.tcl.in create mode 100644 itcl/iwidgets3.0.0/unix/pkgIndex.tcl.in create mode 100644 itcl/license.terms create mode 100644 itcl/makefile.bc create mode 100644 itcl/makefile.vc create mode 100644 itcl/testsuite/config/default.exp create mode 100644 itcl/testsuite/itcl.tests/itcl-test.exp create mode 100644 libgui/ChangeLog create mode 100644 libgui/Makefile.am create mode 100644 libgui/Makefile.in create mode 100644 libgui/README create mode 100644 libgui/acconfig.h create mode 100644 libgui/acinclude.m4 create mode 100644 libgui/aclocal.m4 create mode 100644 libgui/config.h.in create mode 100755 libgui/configure create mode 100644 libgui/configure.in create mode 100644 libgui/doc/tkTable.n create mode 100644 libgui/doc/tkTable_license.terms create mode 100644 libgui/library/Makefile.am create mode 100644 libgui/library/Makefile.in create mode 100644 libgui/library/advice.tcl create mode 100644 libgui/library/balloon.tcl create mode 100644 libgui/library/bbox.tcl create mode 100644 libgui/library/bgerror.tcl create mode 100644 libgui/library/bindings.tcl create mode 100644 libgui/library/canvas.tcl create mode 100644 libgui/library/center.tcl create mode 100644 libgui/library/cframe.tcl create mode 100644 libgui/library/combobox.tcl create mode 100644 libgui/library/debug.tcl create mode 100644 libgui/library/def.tcl create mode 100644 libgui/library/font.tcl create mode 100644 libgui/library/gensym.tcl create mode 100644 libgui/library/gettext.tcl create mode 100644 libgui/library/hooks.tcl create mode 100644 libgui/library/internet.tcl create mode 100644 libgui/library/lframe.tcl create mode 100644 libgui/library/list.tcl create mode 100644 libgui/library/looknfeel.tcl create mode 100644 libgui/library/menu.tcl create mode 100644 libgui/library/mono.tcl create mode 100644 libgui/library/multibox.tcl create mode 100644 libgui/library/pane.tcl create mode 100644 libgui/library/panedwindow.tcl create mode 100644 libgui/library/parse_args.tcl create mode 100644 libgui/library/path.tcl create mode 100644 libgui/library/pkgIndex.tcl create mode 100644 libgui/library/postghost.tcl create mode 100644 libgui/library/prefs.tcl create mode 100644 libgui/library/print.tcl create mode 100644 libgui/library/sendpr.tcl create mode 100644 libgui/library/tclIndex create mode 100644 libgui/library/toolbar.tcl create mode 100644 libgui/library/topbind.tcl create mode 100644 libgui/library/tree.tcl create mode 100644 libgui/library/treetable.tcl create mode 100644 libgui/library/ulset.tcl create mode 100644 libgui/library/ventry.tcl create mode 100644 libgui/library/wframe.tcl create mode 100644 libgui/library/wingrab.tcl create mode 100644 libgui/src/Makefile.am create mode 100644 libgui/src/Makefile.in create mode 100644 libgui/src/guitcl.h create mode 100644 libgui/src/paths.c create mode 100644 libgui/src/subcommand.c create mode 100644 libgui/src/subcommand.h create mode 100644 libgui/src/tclcursor.c create mode 100644 libgui/src/tclgetdir.c create mode 100644 libgui/src/tclhelp.c create mode 100644 libgui/src/tclmain.c create mode 100644 libgui/src/tclmapi.c create mode 100644 libgui/src/tclmsgbox.c create mode 100644 libgui/src/tclshellexe.c create mode 100644 libgui/src/tclsizebox.c create mode 100644 libgui/src/tclwinfont.c create mode 100644 libgui/src/tclwingrab.c create mode 100644 libgui/src/tclwinmode.c create mode 100644 libgui/src/tclwinpath.c create mode 100644 libgui/src/tclwinprint.c create mode 100644 libgui/src/tkCanvEdge.c create mode 100644 libgui/src/tkCanvLayout.c create mode 100644 libgui/src/tkCanvLayout.h create mode 100644 libgui/src/tkGraphCanvas.c create mode 100644 libgui/src/tkTable.c create mode 100644 libgui/src/tkTable.h create mode 100644 libgui/src/tkTable.tcl create mode 100644 libgui/src/tkTableCell.c create mode 100644 libgui/src/tkTableCmd.c create mode 100644 libgui/src/tkTableCmd.h create mode 100644 libgui/src/tkTableTag.c create mode 100644 libgui/src/tkTableWin.c create mode 100644 libgui/src/tkTable_version.in create mode 100644 libgui/src/tkTabletcl.h create mode 100644 libgui/src/tkTreeTable.c create mode 100644 libgui/src/tkTreeTable.h create mode 100644 libgui/src/tkWarpPointer.c create mode 100644 libgui/src/tkWinPrintCanvas.c create mode 100644 libgui/src/tkWinPrintText.c create mode 100644 libgui/src/xpmlib.c create mode 100644 libgui/stamp-h.in create mode 100644 tix/ABOUT.html create mode 100644 tix/ABOUT.txt create mode 100644 tix/ChangeLog create mode 100644 tix/Makefile.in create mode 100644 tix/README.html create mode 100644 tix/README.txt create mode 100644 tix/Version create mode 100755 tix/configure create mode 100644 tix/configure.in create mode 100644 tix/demos/MkChoose.tcl create mode 100644 tix/demos/MkDirLis.tcl create mode 100644 tix/demos/MkManag.tcl create mode 100644 tix/demos/MkSample.tcl create mode 100644 tix/demos/MkScroll.tcl create mode 100644 tix/demos/README create mode 100644 tix/demos/bitmaps/about.xpm create mode 100644 tix/demos/bitmaps/bold.xbm create mode 100644 tix/demos/bitmaps/capital.xbm create mode 100644 tix/demos/bitmaps/centerj.xbm create mode 100644 tix/demos/bitmaps/combobox.xbm create mode 100644 tix/demos/bitmaps/combobox.xpm create mode 100644 tix/demos/bitmaps/drivea.xbm create mode 100644 tix/demos/bitmaps/drivea.xpm create mode 100644 tix/demos/bitmaps/exit.xpm create mode 100644 tix/demos/bitmaps/filebox.xbm create mode 100644 tix/demos/bitmaps/filebox.xpm create mode 100644 tix/demos/bitmaps/harddisk.xbm create mode 100644 tix/demos/bitmaps/harddisk.xpm create mode 100644 tix/demos/bitmaps/italic.xbm create mode 100644 tix/demos/bitmaps/justify.xbm create mode 100644 tix/demos/bitmaps/leftj.xbm create mode 100644 tix/demos/bitmaps/netw.xbm create mode 100644 tix/demos/bitmaps/netw.xpm create mode 100644 tix/demos/bitmaps/network.xbm create mode 100644 tix/demos/bitmaps/network.xpm create mode 100644 tix/demos/bitmaps/optmenu.xpm create mode 100644 tix/demos/bitmaps/rightj.xbm create mode 100644 tix/demos/bitmaps/select.xpm create mode 100644 tix/demos/bitmaps/tix.gif create mode 100644 tix/demos/bitmaps/underlin.xbm create mode 100644 tix/demos/c-code/Makefile.in create mode 100644 tix/demos/c-code/library/Init.tcl create mode 100644 tix/demos/c-code/library/tclIndex create mode 100644 tix/demos/c-code/myCmds.c create mode 100644 tix/demos/c-code/myInit.c create mode 100644 tix/demos/c-code/tixAppInit.c create mode 100644 tix/demos/et/Makefile.demo create mode 100644 tix/demos/et/README create mode 100644 tix/demos/et/etdemo.et create mode 100644 tix/demos/samples/AllSampl.tcl create mode 100644 tix/demos/samples/ArrowBtn.tcl create mode 100644 tix/demos/samples/Balloon.tcl create mode 100644 tix/demos/samples/BtnBox.tcl create mode 100644 tix/demos/samples/CObjView.tcl create mode 100644 tix/demos/samples/ChkList.tcl create mode 100644 tix/demos/samples/CmpImg.tcl create mode 100644 tix/demos/samples/CmpImg1.tcl create mode 100644 tix/demos/samples/CmpImg2.tcl create mode 100644 tix/demos/samples/CmpImg3.tcl create mode 100644 tix/demos/samples/CmpImg4.tcl create mode 100644 tix/demos/samples/ComboBox.tcl create mode 100644 tix/demos/samples/Control.tcl create mode 100644 tix/demos/samples/DirDlg.tcl create mode 100644 tix/demos/samples/DirList.tcl create mode 100644 tix/demos/samples/DirTree.tcl create mode 100644 tix/demos/samples/DragDrop.tcl create mode 100644 tix/demos/samples/DynTree.tcl create mode 100644 tix/demos/samples/EFileDlg.tcl create mode 100644 tix/demos/samples/EditGrid.tcl create mode 100644 tix/demos/samples/FileDlg.tcl create mode 100644 tix/demos/samples/FileEnt.tcl create mode 100644 tix/demos/samples/HList1.tcl create mode 100644 tix/demos/samples/LabEntry.tcl create mode 100644 tix/demos/samples/LabFrame.tcl create mode 100644 tix/demos/samples/ListNBK.tcl create mode 100644 tix/demos/samples/Meter.tcl create mode 100644 tix/demos/samples/NoteBook.tcl create mode 100644 tix/demos/samples/OptMenu.tcl create mode 100644 tix/demos/samples/PanedWin.tcl create mode 100644 tix/demos/samples/PopMenu.tcl create mode 100644 tix/demos/samples/SGrid0.tcl create mode 100644 tix/demos/samples/SGrid1.tcl create mode 100644 tix/demos/samples/SHList.tcl create mode 100644 tix/demos/samples/SHList2.tcl create mode 100644 tix/demos/samples/SListBox.tcl create mode 100644 tix/demos/samples/STList1.tcl create mode 100644 tix/demos/samples/STList2.tcl create mode 100644 tix/demos/samples/STList3.tcl create mode 100644 tix/demos/samples/SText.tcl create mode 100644 tix/demos/samples/SWindow.tcl create mode 100644 tix/demos/samples/Sample.tcl create mode 100644 tix/demos/samples/Select.tcl create mode 100644 tix/demos/samples/StdBBox.tcl create mode 100644 tix/demos/samples/Tree.tcl create mode 100644 tix/demos/samples/Xpm.tcl create mode 100644 tix/demos/samples/Xpm1.tcl create mode 100644 tix/demos/tclIndex create mode 100755 tix/demos/widget create mode 100644 tix/docs/BinInst.html create mode 100644 tix/docs/BinInst.txt create mode 100644 tix/docs/Changes.html create mode 100644 tix/docs/ET.txt create mode 100644 tix/docs/FAQ.html create mode 100644 tix/docs/FAQ.txt create mode 100644 tix/docs/Files.txt create mode 100644 tix/docs/Install.html create mode 100644 tix/docs/Install.txt create mode 100644 tix/docs/Pkg.txt create mode 100644 tix/docs/Plugin.txt create mode 100644 tix/docs/Porting.html create mode 100644 tix/docs/Release-4.1.0.html create mode 100644 tix/docs/Release-4.1.0.txt create mode 100644 tix/docs/Release-4.1a2.html create mode 100644 tix/docs/Release-4.1a2.txt create mode 100644 tix/docs/Release-4.1a3.html create mode 100644 tix/docs/Release-4.1a3.txt create mode 100644 tix/docs/Release-4.1b1.html create mode 100644 tix/docs/Release-4.1b1.txt create mode 100644 tix/docs/Release-4.1b2.html create mode 100644 tix/docs/Release-4.1b2.txt create mode 100644 tix/docs/Release.html create mode 100644 tix/docs/Release.txt create mode 100644 tix/docs/SAModule.txt create mode 100644 tix/docs/UnixInst.html create mode 100644 tix/docs/UnixInst.txt create mode 100644 tix/docs/WinInst.html create mode 100644 tix/docs/WinInst.txt create mode 100644 tix/docs/img/demo1.gif create mode 100644 tix/docs/img/setup0.gif create mode 100644 tix/docs/img/setup1.gif create mode 100644 tix/docs/img/setup2.gif create mode 100644 tix/docs/img/setup3.gif create mode 100644 tix/docs/img/setup5.gif create mode 100644 tix/docs/img/setup6.gif create mode 100644 tix/docs/img/tk42a.gif create mode 100644 tix/docs/img/tk42b.gif create mode 100644 tix/docs/license.html_lib create mode 100644 tix/docs/license.tcltk create mode 100644 tix/generic/tix.h create mode 100644 tix/generic/tixBitmaps.h create mode 100644 tix/generic/tixClass.c create mode 100644 tix/generic/tixCmds.c create mode 100644 tix/generic/tixCompat.c create mode 100644 tix/generic/tixDItem.c create mode 100644 tix/generic/tixDef.h create mode 100644 tix/generic/tixDiITxt.c create mode 100644 tix/generic/tixDiImg.c create mode 100644 tix/generic/tixDiStyle.c create mode 100644 tix/generic/tixDiText.c create mode 100644 tix/generic/tixDiWin.c create mode 100644 tix/generic/tixError.c create mode 100644 tix/generic/tixForm.c create mode 100644 tix/generic/tixForm.h create mode 100644 tix/generic/tixFormMisc.c create mode 100644 tix/generic/tixGeometry.c create mode 100644 tix/generic/tixGrData.c create mode 100644 tix/generic/tixGrData.h create mode 100644 tix/generic/tixGrFmt.c create mode 100644 tix/generic/tixGrRC.c create mode 100644 tix/generic/tixGrSel.c create mode 100644 tix/generic/tixGrSort.c create mode 100644 tix/generic/tixGrUtl.c create mode 100644 tix/generic/tixGrid.c create mode 100644 tix/generic/tixGrid.h create mode 100644 tix/generic/tixHLCol.c create mode 100644 tix/generic/tixHLHdr.c create mode 100644 tix/generic/tixHLInd.c create mode 100644 tix/generic/tixHList.c create mode 100644 tix/generic/tixHList.h create mode 100644 tix/generic/tixImgCmp.c create mode 100644 tix/generic/tixImgXpm.c create mode 100644 tix/generic/tixImgXpm.h create mode 100644 tix/generic/tixInit.c create mode 100644 tix/generic/tixInputO.c create mode 100644 tix/generic/tixInt.h create mode 100644 tix/generic/tixItcl.c create mode 100644 tix/generic/tixItcl.h create mode 100644 tix/generic/tixList.c create mode 100644 tix/generic/tixMethod.c create mode 100644 tix/generic/tixMwm.c create mode 100644 tix/generic/tixNBFrame.c create mode 100644 tix/generic/tixOption.c create mode 100644 tix/generic/tixPort.h create mode 100644 tix/generic/tixScroll.c create mode 100644 tix/generic/tixSmpLs.c create mode 100644 tix/generic/tixTList.c create mode 100644 tix/generic/tixTList.h create mode 100644 tix/generic/tixUtils.c create mode 100644 tix/generic/tixWidget.c create mode 100644 tix/generic/tk4.2/console.tcl create mode 100644 tix/generic/tk4.2/tk.tcl create mode 100755 tix/install.sh create mode 100644 tix/library/Balloon.tcl create mode 100644 tix/library/BtnBox.tcl create mode 100644 tix/library/CObjView.tcl create mode 100644 tix/library/ChkList.tcl create mode 100644 tix/library/ComboBox.tcl create mode 100644 tix/library/Compat.tcl create mode 100644 tix/library/Console.tcl create mode 100644 tix/library/Control.tcl create mode 100644 tix/library/DefSchm.tcl create mode 100644 tix/library/DialogS.tcl create mode 100644 tix/library/DirBox.tcl create mode 100644 tix/library/DirDlg.tcl create mode 100644 tix/library/DirList.tcl create mode 100644 tix/library/DirTree.tcl create mode 100644 tix/library/DragDrop.tcl create mode 100644 tix/library/DtlList.tcl create mode 100644 tix/library/EFileBox.tcl create mode 100644 tix/library/EFileDlg.tcl create mode 100644 tix/library/Event.tcl create mode 100644 tix/library/FileBox.tcl create mode 100644 tix/library/FileCbx.tcl create mode 100644 tix/library/FileCmpt.tcl create mode 100644 tix/library/FileDlg.tcl create mode 100644 tix/library/FileEnt.tcl create mode 100644 tix/library/FileUtil.tcl create mode 100644 tix/library/FloatEnt.tcl create mode 100644 tix/library/Grid.tcl create mode 100644 tix/library/HList.tcl create mode 100644 tix/library/HListDD.tcl create mode 100644 tix/library/IconView.tcl create mode 100644 tix/library/Init.tcl create mode 100644 tix/library/LabEntry.tcl create mode 100644 tix/library/LabFrame.tcl create mode 100644 tix/library/LabWidg.tcl create mode 100644 tix/library/ListNBk.tcl create mode 100644 tix/library/Makefile create mode 100644 tix/library/Meter.tcl create mode 100644 tix/library/MultView.tcl create mode 100644 tix/library/NoteBook.tcl create mode 100644 tix/library/OldUtil.tcl create mode 100644 tix/library/OptMenu.tcl create mode 100644 tix/library/PanedWin.tcl create mode 100644 tix/library/PopMenu.tcl create mode 100644 tix/library/Primitiv.tcl create mode 100644 tix/library/ResizeH.tcl create mode 100644 tix/library/SGrid.tcl create mode 100644 tix/library/SHList.tcl create mode 100644 tix/library/SListBox.tcl create mode 100644 tix/library/STList.tcl create mode 100644 tix/library/SText.tcl create mode 100644 tix/library/SWidget.tcl create mode 100644 tix/library/SWindow.tcl create mode 100644 tix/library/Select.tcl create mode 100644 tix/library/Shell.tcl create mode 100644 tix/library/SimpDlg.tcl create mode 100644 tix/library/StackWin.tcl create mode 100644 tix/library/StatBar.tcl create mode 100644 tix/library/StdBBox.tcl create mode 100644 tix/library/StdShell.tcl create mode 100644 tix/library/TList.tcl create mode 100644 tix/library/Tix.tcl create mode 100644 tix/library/Tree.tcl create mode 100644 tix/library/UnixFile.tcl create mode 100644 tix/library/Utils.tcl create mode 100644 tix/library/VResize.tcl create mode 100644 tix/library/VStack.tcl create mode 100644 tix/library/VTree.tcl create mode 100644 tix/library/Variable.tcl create mode 100644 tix/library/Verify.tcl create mode 100644 tix/library/Version.tcl create mode 100644 tix/library/WInfo.tcl create mode 100644 tix/library/WinFile.tcl create mode 100644 tix/library/bitmaps/act_fold.gif create mode 100644 tix/library/bitmaps/act_fold.xbm create mode 100644 tix/library/bitmaps/act_fold.xpm create mode 100755 tix/library/bitmaps/balarrow.xbm create mode 100755 tix/library/bitmaps/cbxarrow.xbm create mode 100644 tix/library/bitmaps/ck_def.xbm create mode 100644 tix/library/bitmaps/ck_off.xbm create mode 100644 tix/library/bitmaps/ck_on.xbm create mode 100755 tix/library/bitmaps/cross.xbm create mode 100755 tix/library/bitmaps/decr.xbm create mode 100644 tix/library/bitmaps/drop.xbm create mode 100644 tix/library/bitmaps/file.gif create mode 100644 tix/library/bitmaps/file.xbm create mode 100644 tix/library/bitmaps/file.xpm create mode 100644 tix/library/bitmaps/folder.gif create mode 100644 tix/library/bitmaps/folder.xbm create mode 100644 tix/library/bitmaps/folder.xpm create mode 100755 tix/library/bitmaps/harddisk.xbm create mode 100644 tix/library/bitmaps/hourglas.mask create mode 100755 tix/library/bitmaps/hourglas.xbm create mode 100755 tix/library/bitmaps/incr.xbm create mode 100644 tix/library/bitmaps/info.gif create mode 100644 tix/library/bitmaps/info.xpm create mode 100644 tix/library/bitmaps/maximize.xbm create mode 100644 tix/library/bitmaps/minimize.xbm create mode 100644 tix/library/bitmaps/minus.gif create mode 100644 tix/library/bitmaps/minus.xbm create mode 100644 tix/library/bitmaps/minus.xpm create mode 100644 tix/library/bitmaps/minusarm.gif create mode 100644 tix/library/bitmaps/minusarm.xbm create mode 100644 tix/library/bitmaps/minusarm.xpm create mode 100644 tix/library/bitmaps/mktransgif.tcl create mode 100755 tix/library/bitmaps/network.xbm create mode 100644 tix/library/bitmaps/no_entry.gif create mode 100644 tix/library/bitmaps/no_entry.xpm create mode 100644 tix/library/bitmaps/openfile.xbm create mode 100644 tix/library/bitmaps/openfold.gif create mode 100644 tix/library/bitmaps/openfold.xbm create mode 100644 tix/library/bitmaps/openfold.xpm create mode 100644 tix/library/bitmaps/plus.gif create mode 100644 tix/library/bitmaps/plus.xbm create mode 100644 tix/library/bitmaps/plus.xpm create mode 100644 tix/library/bitmaps/plusarm.gif create mode 100644 tix/library/bitmaps/plusarm.xbm create mode 100644 tix/library/bitmaps/plusarm.xpm create mode 100644 tix/library/bitmaps/resize1.xbm create mode 100644 tix/library/bitmaps/resize2.xbm create mode 100644 tix/library/bitmaps/restore.xbm create mode 100644 tix/library/bitmaps/srcfile.gif create mode 100644 tix/library/bitmaps/srcfile.xbm create mode 100644 tix/library/bitmaps/srcfile.xpm create mode 100644 tix/library/bitmaps/system.xbm create mode 100644 tix/library/bitmaps/textfile.gif create mode 100644 tix/library/bitmaps/textfile.xbm create mode 100644 tix/library/bitmaps/textfile.xpm create mode 100755 tix/library/bitmaps/tick.xbm create mode 100644 tix/library/bitmaps/warning.gif create mode 100644 tix/library/bitmaps/warning.xpm create mode 100644 tix/library/fs.tcl create mode 100644 tix/library/pref/12Point.fs create mode 100644 tix/library/pref/12Point.fsc create mode 100644 tix/library/pref/14Point.fs create mode 100644 tix/library/pref/14Point.fsc create mode 100644 tix/library/pref/Bisque.cs create mode 100644 tix/library/pref/Bisque.csc create mode 100644 tix/library/pref/Blue.cs create mode 100644 tix/library/pref/Blue.csc create mode 100644 tix/library/pref/Gray.cs create mode 100644 tix/library/pref/Gray.csc create mode 100644 tix/library/pref/Makefile create mode 100644 tix/library/pref/Old12Pt.fs create mode 100644 tix/library/pref/Old14Pt.fs create mode 100644 tix/library/pref/SGIGray.cs create mode 100644 tix/library/pref/SGIGray.csc create mode 100644 tix/library/pref/TK.cs create mode 100644 tix/library/pref/TK.csc create mode 100644 tix/library/pref/TK.fs create mode 100644 tix/library/pref/TK.fsc create mode 100644 tix/library/pref/TixGray.cs create mode 100644 tix/library/pref/TixGray.csc create mode 100644 tix/library/pref/TkWin.cs create mode 100644 tix/library/pref/TkWin.csc create mode 100644 tix/library/pref/TkWin.fs create mode 100644 tix/library/pref/TkWin.fsc create mode 100755 tix/library/pref/tixmkpref create mode 100644 tix/library/tclIndex create mode 100644 tix/license.terms create mode 100644 tix/man/Balloon.html create mode 100644 tix/man/Balloon.n create mode 100644 tix/man/BtnBox.html create mode 100644 tix/man/BtnBox.n create mode 100644 tix/man/ChkList.html create mode 100644 tix/man/ChkList.n create mode 100644 tix/man/Control.html create mode 100644 tix/man/Control.n create mode 100644 tix/man/DItem.html create mode 100644 tix/man/DItem.n create mode 100644 tix/man/Destroy.html create mode 100644 tix/man/Destroy.n create mode 100644 tix/man/DirDlg.html create mode 100644 tix/man/DirDlg.n create mode 100644 tix/man/DirList.html create mode 100644 tix/man/DirList.n create mode 100644 tix/man/DirTree.html create mode 100644 tix/man/DirTree.n create mode 100644 tix/man/EFileBox.html create mode 100644 tix/man/EFileBox.n create mode 100644 tix/man/EFileDlg.html create mode 100644 tix/man/EFileDlg.n create mode 100644 tix/man/FileBox.html create mode 100644 tix/man/FileBox.n create mode 100644 tix/man/FileDlg.html create mode 100644 tix/man/FileDlg.n create mode 100644 tix/man/FileEnt.html create mode 100644 tix/man/FileEnt.n create mode 100644 tix/man/Form.html create mode 100644 tix/man/Form.n create mode 100644 tix/man/GetBool.html create mode 100644 tix/man/GetBool.n create mode 100644 tix/man/GetInt.html create mode 100644 tix/man/GetInt.n create mode 100644 tix/man/Grid.html create mode 100644 tix/man/Grid.n create mode 100644 tix/man/HList.html create mode 100644 tix/man/HList.n create mode 100644 tix/man/InpOnly.html create mode 100644 tix/man/InpOnly.n create mode 100644 tix/man/LabEntry.html create mode 100644 tix/man/LabEntry.n create mode 100644 tix/man/LabFrame.html create mode 100644 tix/man/LabFrame.n create mode 100644 tix/man/ListNBK.html create mode 100644 tix/man/ListNBK.n create mode 100644 tix/man/Meter.html create mode 100644 tix/man/Meter.n create mode 100644 tix/man/Mwm.html create mode 100644 tix/man/Mwm.n create mode 100644 tix/man/NBFrame.html create mode 100644 tix/man/NBFrame.n create mode 100644 tix/man/NoteBook.html create mode 100644 tix/man/NoteBook.n create mode 100644 tix/man/OptMenu.html create mode 100644 tix/man/OptMenu.n create mode 100644 tix/man/PanedWin.html create mode 100644 tix/man/PanedWin.n create mode 100644 tix/man/PopMenu.html create mode 100644 tix/man/PopMenu.n create mode 100644 tix/man/SHList.html create mode 100644 tix/man/SHList.n create mode 100644 tix/man/SListBox.html create mode 100644 tix/man/SListBox.n create mode 100644 tix/man/SText.html create mode 100644 tix/man/SText.n create mode 100644 tix/man/SWindow.html create mode 100644 tix/man/SWindow.n create mode 100644 tix/man/Select.html create mode 100644 tix/man/Select.n create mode 100644 tix/man/StdBBox.html create mode 100644 tix/man/StdBBox.n create mode 100644 tix/man/TList.html create mode 100644 tix/man/TList.n create mode 100644 tix/man/TixComboBox.html create mode 100644 tix/man/TixComboBox.n create mode 100644 tix/man/TixIntro.html create mode 100644 tix/man/TixIntro.n create mode 100644 tix/man/Tree.html create mode 100644 tix/man/Tree.n create mode 100644 tix/man/Utils.html create mode 100644 tix/man/Utils.n create mode 100644 tix/man/Wm.html create mode 100644 tix/man/Wm.n create mode 100644 tix/man/compound.html create mode 100644 tix/man/compound.n create mode 100644 tix/man/index.html create mode 100644 tix/man/man.macros create mode 100644 tix/man/pixmap.html create mode 100644 tix/man/pixmap.n create mode 100644 tix/man/tix.html create mode 100644 tix/man/tix.n create mode 100644 tix/man/tixwish.1 create mode 100644 tix/man/tixwish.html create mode 100644 tix/tests/Driver.tcl create mode 100644 tix/tests/Makefile.in create mode 100644 tix/tests/README create mode 100755 tix/tests/Test.tcl create mode 100644 tix/tests/cleanup/cleanup.tcl create mode 100644 tix/tests/cleanup/files create mode 100644 tix/tests/files create mode 100644 tix/tests/general/NoteBook.tcl create mode 100644 tix/tests/general/api.tcl create mode 100644 tix/tests/general/cmderror.tcl create mode 100644 tix/tests/general/combobox.tcl create mode 100644 tix/tests/general/dirbox.tcl create mode 100644 tix/tests/general/draw.tcl create mode 100644 tix/tests/general/event0.tcl create mode 100644 tix/tests/general/filebox.tcl create mode 100644 tix/tests/general/files create mode 100644 tix/tests/general/fs.tcl create mode 100644 tix/tests/general/labentry.tcl create mode 100644 tix/tests/general/minterp.tcl create mode 100644 tix/tests/general/mwm.tcl create mode 100644 tix/tests/general/oop.tcl create mode 100644 tix/tests/general/options.tcl create mode 100644 tix/tests/general/optmenu.tcl create mode 100644 tix/tests/general/pane.tcl create mode 100644 tix/tests/general/pkginit.tcl create mode 100644 tix/tests/general/samples.tcl create mode 100644 tix/tests/general/select.tcl create mode 100644 tix/tests/general/slistbox.tcl create mode 100644 tix/tests/general/testtmpl.tcl create mode 100644 tix/tests/general/var1.tcl create mode 100644 tix/tests/grid/Grid.tcl create mode 100644 tix/tests/grid/files create mode 100644 tix/tests/hlist/DirList.tcl create mode 100644 tix/tests/hlist/HLHdr.tcl create mode 100644 tix/tests/hlist/HLInd.tcl create mode 100644 tix/tests/hlist/HList.tcl create mode 100644 tix/tests/hlist/files create mode 100644 tix/tests/hlist/items.tcl create mode 100644 tix/tests/itcl/files create mode 100644 tix/tests/itcl/general.tcl create mode 100644 tix/tests/itcl/itk.tcl create mode 100644 tix/tests/itcl/namesp.tcl create mode 100644 tix/tests/itcl/pkginit.tcl create mode 100644 tix/tests/itcl/scope1.tcl create mode 100644 tix/tests/library/CaseData.tcl create mode 100644 tix/tests/library/TestLib.tcl create mode 100644 tix/tests/library/TestLib.txt create mode 100644 tix/tests/library/load-init.tcl create mode 100644 tix/tests/load/files create mode 100644 tix/tests/load/general.tcl create mode 100644 tix/tests/load/pkginit.tcl create mode 100644 tix/tests/tlist/TList.tcl create mode 100644 tix/tests/tlist/files create mode 100644 tix/tests/xpm/2cpp.xpm create mode 100644 tix/tests/xpm/brace.xpm create mode 100644 tix/tests/xpm/comments.xpm create mode 100644 tix/tests/xpm/compound.tcl create mode 100644 tix/tests/xpm/f-badcol.xpm create mode 100644 tix/tests/xpm/f-badpix.xpm create mode 100644 tix/tests/xpm/f-commt.xpm create mode 100644 tix/tests/xpm/f-missline.xpm create mode 100644 tix/tests/xpm/f-ok.xpm create mode 100644 tix/tests/xpm/f-shortln.xpm create mode 100644 tix/tests/xpm/files create mode 100644 tix/tests/xpm/folder.xpm create mode 100644 tix/tests/xpm/xpm.tcl create mode 100644 tix/tixConfig.sh.in create mode 100644 tix/tools/README.html create mode 100755 tix/tools/color.tcl create mode 100755 tix/tools/doconfig.tcl create mode 100755 tix/tools/domakefile.tcl create mode 100755 tix/tools/dosstrip.tcl create mode 100644 tix/tools/doxx.tcl create mode 100755 tix/tools/hanno.tcl create mode 100755 tix/tools/icon.tcl create mode 100755 tix/tools/makebitmap.tcl create mode 100755 tix/tools/makescript.tcl create mode 100755 tix/tools/mkfaq.tcl create mode 100755 tix/tools/setcolon.sh create mode 100644 tix/tools/tclc.tcl create mode 100644 tix/tools/tclc_s.tcl create mode 100755 tix/tools/tcltrim create mode 100755 tix/tools/tixindex create mode 100755 tix/tools/tixverify.tcl create mode 100644 tix/unix/Makefile.in create mode 100644 tix/unix/aclocal.m4 create mode 100755 tix/unix/configure create mode 100644 tix/unix/configure.in create mode 100644 tix/unix/samAppInit.c create mode 100644 tix/unix/tixUnixDraw.c create mode 100644 tix/unix/tixUnixInt.h create mode 100644 tix/unix/tixUnixPort.h create mode 100644 tix/unix/tixUnixSam.c create mode 100644 tix/unix/tixUnixWm.c create mode 100644 tix/unix/tixUnixXpm.c create mode 100644 tix/unix/tk4.2/Makefile.in create mode 100755 tix/unix/tk4.2/configure create mode 100644 tix/unix/tk4.2/configure.in create mode 100644 tix/unix/tk4.2/pkgIndex.tcl.in create mode 100644 tix/unix/tk4.2/tclUnixSam76.c create mode 100644 tix/unix/tk4.2/tixAppInit.c create mode 100644 tix/unix/tk4.2/tkUnixSam42.c create mode 100644 tix/unix/tk8.0/Makefile.in create mode 100755 tix/unix/tk8.0/configure create mode 100644 tix/unix/tk8.0/configure.in create mode 100644 tix/unix/tk8.0/pkgIndex.tcl.in create mode 100644 tix/unix/tk8.0/tixAppInit.c create mode 100644 tix/unix/tk8.1/Makefile.in create mode 100644 tix/unix/tk8.1/aclocal.m4 create mode 100755 tix/unix/tk8.1/configure create mode 100644 tix/unix/tk8.1/configure.in create mode 100644 tix/unix/tk8.1/pkgIndex.tcl.in create mode 100644 tix/unix/tk8.1/tixAppInit.c create mode 100644 tix/win/DLLDemo/Demo.c create mode 100644 tix/win/DLLDemo/Makefile.bc create mode 100644 tix/win/DLLDemo/README create mode 100644 tix/win/Makefile.in create mode 100644 tix/win/README create mode 100644 tix/win/aclocal.m4 create mode 100755 tix/win/configure create mode 100644 tix/win/configure.in create mode 100644 tix/win/makefile.bc create mode 100644 tix/win/makefile.vc create mode 100644 tix/win/pkgIndex.tcl create mode 100755 tix/win/rc/tixwish.ico create mode 100644 tix/win/rc/tixwish.rc create mode 100644 tix/win/tcl7.6/dummy.dir create mode 100644 tix/win/tcl8.0/dummy.dir create mode 100644 tix/win/tcl8.1/dummy.dir create mode 100644 tix/win/tixWCmpt.c create mode 100644 tix/win/tixWinDraw.c create mode 100644 tix/win/tixWinInt.h create mode 100644 tix/win/tixWinMain.c create mode 100644 tix/win/tixWinPort.h create mode 100644 tix/win/tixWinWm.c create mode 100644 tix/win/tixWinXpm.c create mode 100644 tix/win/tkConsole41.c create mode 100644 tix/win/tkConsole42.c create mode 100644 tix/win/tkConsole80a1.c create mode 100644 tix/win/tkConsole80b1.c create mode 100644 tix/win/tkConsole81.c create mode 100644 tk/ChangeLog create mode 100644 tk/Makefile.in create mode 100644 tk/README create mode 100644 tk/bitmaps/error.bmp create mode 100644 tk/bitmaps/gray12.bmp create mode 100644 tk/bitmaps/gray25.bmp create mode 100644 tk/bitmaps/gray50.bmp create mode 100644 tk/bitmaps/gray75.bmp create mode 100644 tk/bitmaps/hourglass.bmp create mode 100644 tk/bitmaps/info.bmp create mode 100644 tk/bitmaps/questhead.bmp create mode 100644 tk/bitmaps/question.bmp create mode 100644 tk/bitmaps/warning.bmp create mode 100644 tk/changes create mode 100644 tk/compat/license.terms create mode 100644 tk/compat/limits.h create mode 100644 tk/compat/stdlib.h create mode 100644 tk/compat/unistd.h create mode 100755 tk/configure create mode 100644 tk/configure.in create mode 100644 tk/doc/3DBorder.3 create mode 100644 tk/doc/BindTable.3 create mode 100644 tk/doc/CanvPsY.3 create mode 100644 tk/doc/CanvTkwin.3 create mode 100644 tk/doc/CanvTxtInfo.3 create mode 100644 tk/doc/Clipboard.3 create mode 100644 tk/doc/ClrSelect.3 create mode 100644 tk/doc/ConfigWidg.3 create mode 100644 tk/doc/ConfigWind.3 create mode 100644 tk/doc/CoordToWin.3 create mode 100644 tk/doc/CrtErrHdlr.3 create mode 100644 tk/doc/CrtGenHdlr.3 create mode 100644 tk/doc/CrtImgType.3 create mode 100644 tk/doc/CrtItemType.3 create mode 100644 tk/doc/CrtPhImgFmt.3 create mode 100644 tk/doc/CrtSelHdlr.3 create mode 100644 tk/doc/CrtWindow.3 create mode 100644 tk/doc/DeleteImg.3 create mode 100644 tk/doc/DrawFocHlt.3 create mode 100644 tk/doc/EventHndlr.3 create mode 100644 tk/doc/FindPhoto.3 create mode 100644 tk/doc/FontId.3 create mode 100644 tk/doc/FreeXId.3 create mode 100644 tk/doc/GeomReq.3 create mode 100644 tk/doc/GetAnchor.3 create mode 100644 tk/doc/GetBitmap.3 create mode 100644 tk/doc/GetCapStyl.3 create mode 100644 tk/doc/GetClrmap.3 create mode 100644 tk/doc/GetColor.3 create mode 100644 tk/doc/GetCursor.3 create mode 100644 tk/doc/GetFont.3 create mode 100644 tk/doc/GetGC.3 create mode 100644 tk/doc/GetImage.3 create mode 100644 tk/doc/GetJoinStl.3 create mode 100644 tk/doc/GetJustify.3 create mode 100644 tk/doc/GetOption.3 create mode 100644 tk/doc/GetPixels.3 create mode 100644 tk/doc/GetPixmap.3 create mode 100644 tk/doc/GetRelief.3 create mode 100644 tk/doc/GetRootCrd.3 create mode 100644 tk/doc/GetScroll.3 create mode 100644 tk/doc/GetSelect.3 create mode 100644 tk/doc/GetUid.3 create mode 100644 tk/doc/GetVRoot.3 create mode 100644 tk/doc/GetVisual.3 create mode 100644 tk/doc/HandleEvent.3 create mode 100644 tk/doc/IdToWindow.3 create mode 100644 tk/doc/ImgChanged.3 create mode 100644 tk/doc/InternAtom.3 create mode 100644 tk/doc/MainLoop.3 create mode 100644 tk/doc/MainWin.3 create mode 100644 tk/doc/MaintGeom.3 create mode 100644 tk/doc/ManageGeom.3 create mode 100644 tk/doc/MapWindow.3 create mode 100644 tk/doc/MeasureChar.3 create mode 100644 tk/doc/MoveToplev.3 create mode 100644 tk/doc/Name.3 create mode 100644 tk/doc/NameOfImg.3 create mode 100644 tk/doc/OwnSelect.3 create mode 100644 tk/doc/ParseArgv.3 create mode 100644 tk/doc/QWinEvent.3 create mode 100644 tk/doc/Restack.3 create mode 100644 tk/doc/RestrictEv.3 create mode 100644 tk/doc/SetAppName.3 create mode 100644 tk/doc/SetClass.3 create mode 100644 tk/doc/SetGrid.3 create mode 100644 tk/doc/SetVisual.3 create mode 100644 tk/doc/StrictMotif.3 create mode 100644 tk/doc/TextLayout.3 create mode 100644 tk/doc/Tk_Init.3 create mode 100644 tk/doc/Tk_Main.3 create mode 100644 tk/doc/WindowId.3 create mode 100644 tk/doc/bell.n create mode 100644 tk/doc/bind.n create mode 100644 tk/doc/bindtags.n create mode 100644 tk/doc/bitmap.n create mode 100644 tk/doc/button.n create mode 100644 tk/doc/canvas.n create mode 100644 tk/doc/checkbutton.n create mode 100644 tk/doc/chooseColor.n create mode 100644 tk/doc/clipboard.n create mode 100644 tk/doc/destroy.n create mode 100644 tk/doc/dialog.n create mode 100644 tk/doc/entry.n create mode 100644 tk/doc/event.n create mode 100644 tk/doc/focus.n create mode 100644 tk/doc/focusNext.n create mode 100644 tk/doc/font.n create mode 100644 tk/doc/frame.n create mode 100644 tk/doc/getOpenFile.n create mode 100644 tk/doc/grab.n create mode 100644 tk/doc/grid.n create mode 100644 tk/doc/image.n create mode 100644 tk/doc/label.n create mode 100644 tk/doc/license.terms create mode 100644 tk/doc/listbox.n create mode 100644 tk/doc/loadTk.n create mode 100644 tk/doc/lower.n create mode 100644 tk/doc/man.macros create mode 100644 tk/doc/menu.n create mode 100644 tk/doc/menubar.n create mode 100644 tk/doc/menubutton.n create mode 100644 tk/doc/message.n create mode 100644 tk/doc/messageBox.n create mode 100644 tk/doc/option.n create mode 100644 tk/doc/optionMenu.n create mode 100644 tk/doc/options.n create mode 100644 tk/doc/pack-old.n create mode 100644 tk/doc/pack.n create mode 100644 tk/doc/palette.n create mode 100644 tk/doc/photo.n create mode 100644 tk/doc/place.n create mode 100644 tk/doc/popup.n create mode 100644 tk/doc/radiobutton.n create mode 100644 tk/doc/raise.n create mode 100644 tk/doc/scale.n create mode 100644 tk/doc/scrollbar.n create mode 100644 tk/doc/selection.n create mode 100644 tk/doc/send.n create mode 100644 tk/doc/text.n create mode 100644 tk/doc/tk.n create mode 100644 tk/doc/tkerror.n create mode 100644 tk/doc/tkvars.n create mode 100644 tk/doc/tkwait.n create mode 100644 tk/doc/toplevel.n create mode 100644 tk/doc/winfo.n create mode 100644 tk/doc/wish.1 create mode 100644 tk/doc/wm.n create mode 100644 tk/generic/README create mode 100644 tk/generic/default.h create mode 100644 tk/generic/ks_names.h create mode 100644 tk/generic/tk.h create mode 100644 tk/generic/tk3d.c create mode 100644 tk/generic/tk3d.h create mode 100644 tk/generic/tkArgv.c create mode 100644 tk/generic/tkAtom.c create mode 100644 tk/generic/tkBind.c create mode 100644 tk/generic/tkBitmap.c create mode 100644 tk/generic/tkButton.c create mode 100644 tk/generic/tkButton.h create mode 100644 tk/generic/tkCanvArc.c create mode 100644 tk/generic/tkCanvBmap.c create mode 100644 tk/generic/tkCanvImg.c create mode 100644 tk/generic/tkCanvLine.c create mode 100644 tk/generic/tkCanvPoly.c create mode 100644 tk/generic/tkCanvPs.c create mode 100644 tk/generic/tkCanvText.c create mode 100644 tk/generic/tkCanvUtil.c create mode 100644 tk/generic/tkCanvWind.c create mode 100644 tk/generic/tkCanvas.c create mode 100644 tk/generic/tkCanvas.h create mode 100644 tk/generic/tkClipboard.c create mode 100644 tk/generic/tkCmds.c create mode 100644 tk/generic/tkColor.c create mode 100644 tk/generic/tkColor.h create mode 100644 tk/generic/tkConfig.c create mode 100644 tk/generic/tkConsole.c create mode 100644 tk/generic/tkCursor.c create mode 100644 tk/generic/tkEntry.c create mode 100644 tk/generic/tkError.c create mode 100644 tk/generic/tkEvent.c create mode 100644 tk/generic/tkFileFilter.c create mode 100644 tk/generic/tkFileFilter.h create mode 100644 tk/generic/tkFocus.c create mode 100644 tk/generic/tkFont.c create mode 100644 tk/generic/tkFont.h create mode 100644 tk/generic/tkFrame.c create mode 100644 tk/generic/tkGC.c create mode 100644 tk/generic/tkGeometry.c create mode 100644 tk/generic/tkGet.c create mode 100644 tk/generic/tkGrab.c create mode 100644 tk/generic/tkGrid.c create mode 100644 tk/generic/tkImage.c create mode 100644 tk/generic/tkImgBmap.c create mode 100644 tk/generic/tkImgGIF.c create mode 100644 tk/generic/tkImgPPM.c create mode 100644 tk/generic/tkImgPhoto.c create mode 100644 tk/generic/tkImgUtil.c create mode 100644 tk/generic/tkInitScript.h create mode 100644 tk/generic/tkInt.h create mode 100644 tk/generic/tkListbox.c create mode 100644 tk/generic/tkMacWinMenu.c create mode 100644 tk/generic/tkMain.c create mode 100644 tk/generic/tkMenu.c create mode 100644 tk/generic/tkMenu.h create mode 100644 tk/generic/tkMenuDraw.c create mode 100644 tk/generic/tkMenubutton.c create mode 100644 tk/generic/tkMenubutton.h create mode 100644 tk/generic/tkMessage.c create mode 100644 tk/generic/tkOption.c create mode 100644 tk/generic/tkPack.c create mode 100644 tk/generic/tkPlace.c create mode 100644 tk/generic/tkPointer.c create mode 100644 tk/generic/tkPort.h create mode 100644 tk/generic/tkRectOval.c create mode 100644 tk/generic/tkScale.c create mode 100644 tk/generic/tkScale.h create mode 100644 tk/generic/tkScrollbar.c create mode 100644 tk/generic/tkScrollbar.h create mode 100644 tk/generic/tkSelect.c create mode 100644 tk/generic/tkSelect.h create mode 100644 tk/generic/tkSquare.c create mode 100644 tk/generic/tkTest.c create mode 100644 tk/generic/tkText.c create mode 100644 tk/generic/tkText.h create mode 100644 tk/generic/tkTextBTree.c create mode 100644 tk/generic/tkTextDisp.c create mode 100644 tk/generic/tkTextImage.c create mode 100644 tk/generic/tkTextIndex.c create mode 100644 tk/generic/tkTextMark.c create mode 100644 tk/generic/tkTextTag.c create mode 100644 tk/generic/tkTextWind.c create mode 100644 tk/generic/tkTrig.c create mode 100644 tk/generic/tkUtil.c create mode 100644 tk/generic/tkVisual.c create mode 100644 tk/generic/tkWindow.c create mode 100644 tk/library/bgerror.tcl create mode 100644 tk/library/button.tcl create mode 100644 tk/library/clrpick.tcl create mode 100644 tk/library/comdlg.tcl create mode 100644 tk/library/console.tcl create mode 100644 tk/library/demos/README create mode 100644 tk/library/demos/arrow.tcl create mode 100644 tk/library/demos/bind.tcl create mode 100644 tk/library/demos/bitmap.tcl create mode 100755 tk/library/demos/browse create mode 100644 tk/library/demos/button.tcl create mode 100644 tk/library/demos/check.tcl create mode 100644 tk/library/demos/clrpick.tcl create mode 100644 tk/library/demos/colors.tcl create mode 100644 tk/library/demos/cscroll.tcl create mode 100644 tk/library/demos/ctext.tcl create mode 100644 tk/library/demos/dialog1.tcl create mode 100644 tk/library/demos/dialog2.tcl create mode 100644 tk/library/demos/entry1.tcl create mode 100644 tk/library/demos/entry2.tcl create mode 100644 tk/library/demos/filebox.tcl create mode 100644 tk/library/demos/floor.tcl create mode 100644 tk/library/demos/form.tcl create mode 100755 tk/library/demos/hello create mode 100644 tk/library/demos/hscale.tcl create mode 100644 tk/library/demos/icon.tcl create mode 100644 tk/library/demos/image1.tcl create mode 100644 tk/library/demos/image2.tcl create mode 100644 tk/library/demos/images/earth.gif create mode 100644 tk/library/demos/images/earthris.gif create mode 100644 tk/library/demos/images/face.bmp create mode 100644 tk/library/demos/images/flagdown.bmp create mode 100644 tk/library/demos/images/flagup.bmp create mode 100644 tk/library/demos/images/gray25.bmp create mode 100644 tk/library/demos/images/letters.bmp create mode 100644 tk/library/demos/images/noletter.bmp create mode 100644 tk/library/demos/images/pattern.bmp create mode 100644 tk/library/demos/images/tcllogo.gif create mode 100644 tk/library/demos/images/teapot.ppm create mode 100644 tk/library/demos/items.tcl create mode 100755 tk/library/demos/ixset create mode 100644 tk/library/demos/label.tcl create mode 100644 tk/library/demos/license.terms create mode 100644 tk/library/demos/menu.tcl create mode 100644 tk/library/demos/menubu.tcl create mode 100644 tk/library/demos/msgbox.tcl create mode 100644 tk/library/demos/plot.tcl create mode 100644 tk/library/demos/puzzle.tcl create mode 100644 tk/library/demos/radio.tcl create mode 100755 tk/library/demos/rmt create mode 100755 tk/library/demos/rolodex create mode 100644 tk/library/demos/ruler.tcl create mode 100644 tk/library/demos/sayings.tcl create mode 100644 tk/library/demos/search.tcl create mode 100755 tk/library/demos/square create mode 100644 tk/library/demos/states.tcl create mode 100644 tk/library/demos/style.tcl create mode 100644 tk/library/demos/tclIndex create mode 100755 tk/library/demos/tcolor create mode 100644 tk/library/demos/text.tcl create mode 100755 tk/library/demos/timer create mode 100644 tk/library/demos/twind.tcl create mode 100644 tk/library/demos/vscale.tcl create mode 100755 tk/library/demos/widget create mode 100644 tk/library/dialog.tcl create mode 100644 tk/library/entry.tcl create mode 100644 tk/library/focus.tcl create mode 100644 tk/library/images/README create mode 100644 tk/library/images/logo100.gif create mode 100644 tk/library/images/logo64.gif create mode 100644 tk/library/images/logoLarge.gif create mode 100644 tk/library/images/logoMed.gif create mode 100644 tk/library/images/pwrdLogo100.gif create mode 100644 tk/library/images/pwrdLogo150.gif create mode 100644 tk/library/images/pwrdLogo175.gif create mode 100644 tk/library/images/pwrdLogo200.gif create mode 100644 tk/library/images/pwrdLogo75.gif create mode 100644 tk/library/license.terms create mode 100644 tk/library/listbox.tcl create mode 100644 tk/library/menu.tcl create mode 100644 tk/library/msgbox.tcl create mode 100644 tk/library/obsolete.tcl create mode 100644 tk/library/optMenu.tcl create mode 100644 tk/library/palette.tcl create mode 100644 tk/library/safetk.tcl create mode 100644 tk/library/scale.tcl create mode 100644 tk/library/scrlbar.tcl create mode 100644 tk/library/tclIndex create mode 100644 tk/library/tearoff.tcl create mode 100644 tk/library/text.tcl create mode 100644 tk/library/tk.tcl create mode 100644 tk/library/tkfbox.tcl create mode 100644 tk/library/xmfbox.tcl create mode 100644 tk/license.terms create mode 100644 tk/mac/MW_TkHeader.pch create mode 100644 tk/mac/README create mode 100644 tk/mac/bugs.doc create mode 100644 tk/mac/license.terms create mode 100644 tk/mac/tclets.tcl create mode 100644 tk/mac/tkMac.h create mode 100644 tk/mac/tkMacAppInit.c create mode 100644 tk/mac/tkMacApplication.r create mode 100644 tk/mac/tkMacBitmap.c create mode 100644 tk/mac/tkMacButton.c create mode 100644 tk/mac/tkMacClipboard.c create mode 100644 tk/mac/tkMacColor.c create mode 100644 tk/mac/tkMacCursor.c create mode 100644 tk/mac/tkMacCursors.r create mode 100644 tk/mac/tkMacDefault.h create mode 100644 tk/mac/tkMacDialog.c create mode 100644 tk/mac/tkMacDraw.c create mode 100644 tk/mac/tkMacEmbed.c create mode 100644 tk/mac/tkMacFont.c create mode 100644 tk/mac/tkMacHLEvents.c create mode 100644 tk/mac/tkMacInit.c create mode 100644 tk/mac/tkMacInt.h create mode 100644 tk/mac/tkMacKeyboard.c create mode 100644 tk/mac/tkMacLibrary.r create mode 100644 tk/mac/tkMacMDEF.c create mode 100644 tk/mac/tkMacMDEF.r create mode 100644 tk/mac/tkMacMenu.c create mode 100644 tk/mac/tkMacMenu.r create mode 100644 tk/mac/tkMacMenubutton.c create mode 100644 tk/mac/tkMacMenus.c create mode 100644 tk/mac/tkMacPort.h create mode 100644 tk/mac/tkMacRegion.c create mode 100644 tk/mac/tkMacResource.r create mode 100644 tk/mac/tkMacScale.c create mode 100644 tk/mac/tkMacScrlbr.c create mode 100644 tk/mac/tkMacSend.c create mode 100644 tk/mac/tkMacShLib.exp create mode 100644 tk/mac/tkMacSubwindows.c create mode 100644 tk/mac/tkMacTest.c create mode 100644 tk/mac/tkMacWindowMgr.c create mode 100644 tk/mac/tkMacWm.c create mode 100644 tk/mac/tkMacXCursors.r create mode 100644 tk/mac/tkMacXStubs.c create mode 100644 tk/tests/README create mode 100644 tk/tests/arc.tcl create mode 100644 tk/tests/bell.test create mode 100644 tk/tests/bevel.tcl create mode 100644 tk/tests/bgerror.test create mode 100644 tk/tests/bind.test create mode 100644 tk/tests/bugs.tcl create mode 100644 tk/tests/butGeom.tcl create mode 100644 tk/tests/butGeom2.tcl create mode 100644 tk/tests/button.test create mode 100644 tk/tests/canvImg.test create mode 100644 tk/tests/canvPs.test create mode 100644 tk/tests/canvPsArc.tcl create mode 100644 tk/tests/canvPsBmap.tcl create mode 100644 tk/tests/canvPsGrph.tcl create mode 100644 tk/tests/canvPsText.tcl create mode 100644 tk/tests/canvRect.test create mode 100644 tk/tests/canvText.test create mode 100644 tk/tests/canvWind.test create mode 100644 tk/tests/canvas.test create mode 100644 tk/tests/clipboard.test create mode 100644 tk/tests/clrpick.test create mode 100644 tk/tests/cmap.tcl create mode 100644 tk/tests/cmds.test create mode 100644 tk/tests/color.test create mode 100644 tk/tests/entry.test create mode 100644 tk/tests/event.test create mode 100644 tk/tests/filebox.test create mode 100644 tk/tests/focus.test create mode 100644 tk/tests/focusTcl.test create mode 100644 tk/tests/font.test create mode 100644 tk/tests/frame.test create mode 100644 tk/tests/geometry.test create mode 100644 tk/tests/grid.test create mode 100644 tk/tests/id.test create mode 100644 tk/tests/image.test create mode 100644 tk/tests/imgBmap.test create mode 100644 tk/tests/imgPPM.test create mode 100644 tk/tests/imgPhoto.test create mode 100644 tk/tests/license.terms create mode 100644 tk/tests/listbox.test create mode 100644 tk/tests/macEmbed.test create mode 100644 tk/tests/macFont.test create mode 100644 tk/tests/macMenu.test create mode 100644 tk/tests/macWinMenu.test create mode 100644 tk/tests/macscrollbar.test create mode 100644 tk/tests/main.test create mode 100644 tk/tests/menu.test create mode 100644 tk/tests/menuDraw.test create mode 100644 tk/tests/menubut.test create mode 100644 tk/tests/msgbox.test create mode 100644 tk/tests/obj.test create mode 100644 tk/tests/oldpack.test create mode 100644 tk/tests/option.file1 create mode 100644 tk/tests/option.file2 create mode 100644 tk/tests/option.test create mode 100644 tk/tests/pack.test create mode 100644 tk/tests/place.test create mode 100644 tk/tests/raise.test create mode 100644 tk/tests/safe.test create mode 100644 tk/tests/scale.test create mode 100644 tk/tests/scrollbar.test create mode 100644 tk/tests/select.test create mode 100644 tk/tests/send.test create mode 100644 tk/tests/text.test create mode 100644 tk/tests/textBTree.test create mode 100644 tk/tests/textDisp.test create mode 100644 tk/tests/textImage.test create mode 100644 tk/tests/textIndex.test create mode 100644 tk/tests/textMark.test create mode 100644 tk/tests/textTag.test create mode 100644 tk/tests/textWind.test create mode 100644 tk/tests/tk.test create mode 100644 tk/tests/unixButton.test create mode 100644 tk/tests/unixEmbed.test create mode 100644 tk/tests/unixFont.test create mode 100644 tk/tests/unixMenu.test create mode 100644 tk/tests/unixWm.test create mode 100644 tk/tests/util.test create mode 100644 tk/tests/visual.test create mode 100644 tk/tests/winButton.test create mode 100644 tk/tests/winClipboard.test create mode 100644 tk/tests/winFont.test create mode 100644 tk/tests/winMenu.test create mode 100644 tk/tests/winWm.test create mode 100644 tk/tests/window.test create mode 100644 tk/tests/winfo.test create mode 100644 tk/testsuite/config/default.exp create mode 100644 tk/testsuite/tk.tests/tk-test.exp create mode 100644 tk/unix/ChangeLog create mode 100644 tk/unix/Makefile.in create mode 100644 tk/unix/README create mode 100755 tk/unix/configure create mode 100755 tk/unix/configure.in create mode 100755 tk/unix/install-sh create mode 100644 tk/unix/license.terms create mode 100755 tk/unix/mkLinks create mode 100644 tk/unix/tkAppInit.c create mode 100644 tk/unix/tkConfig.sh.in create mode 100644 tk/unix/tkUnix.c create mode 100644 tk/unix/tkUnix3d.c create mode 100644 tk/unix/tkUnixButton.c create mode 100644 tk/unix/tkUnixColor.c create mode 100644 tk/unix/tkUnixCursor.c create mode 100644 tk/unix/tkUnixDefault.h create mode 100644 tk/unix/tkUnixDialog.c create mode 100644 tk/unix/tkUnixDraw.c create mode 100644 tk/unix/tkUnixEmbed.c create mode 100644 tk/unix/tkUnixEvent.c create mode 100644 tk/unix/tkUnixFocus.c create mode 100644 tk/unix/tkUnixFont.c create mode 100644 tk/unix/tkUnixInit.c create mode 100644 tk/unix/tkUnixInt.h create mode 100644 tk/unix/tkUnixMenu.c create mode 100644 tk/unix/tkUnixMenubu.c create mode 100644 tk/unix/tkUnixPort.h create mode 100644 tk/unix/tkUnixScale.c create mode 100644 tk/unix/tkUnixScrlbr.c create mode 100644 tk/unix/tkUnixSelect.c create mode 100644 tk/unix/tkUnixSend.c create mode 100644 tk/unix/tkUnixWm.c create mode 100644 tk/unix/tkUnixXId.c create mode 100644 tk/win/Makefile.in create mode 100644 tk/win/README create mode 100755 tk/win/configure create mode 100755 tk/win/configure.in create mode 100644 tk/win/license.terms create mode 100644 tk/win/makefile.bc create mode 100644 tk/win/makefile.vc create mode 100644 tk/win/mkd.bat create mode 100644 tk/win/rc/buttons.bmp create mode 100644 tk/win/rc/cursor00.cur create mode 100644 tk/win/rc/cursor02.cur create mode 100644 tk/win/rc/cursor04.cur create mode 100644 tk/win/rc/cursor06.cur create mode 100644 tk/win/rc/cursor08.cur create mode 100644 tk/win/rc/cursor0a.cur create mode 100644 tk/win/rc/cursor0c.cur create mode 100644 tk/win/rc/cursor0e.cur create mode 100644 tk/win/rc/cursor10.cur create mode 100644 tk/win/rc/cursor12.cur create mode 100644 tk/win/rc/cursor14.cur create mode 100644 tk/win/rc/cursor16.cur create mode 100644 tk/win/rc/cursor18.cur create mode 100644 tk/win/rc/cursor1a.cur create mode 100644 tk/win/rc/cursor1c.cur create mode 100644 tk/win/rc/cursor1e.cur create mode 100644 tk/win/rc/cursor20.cur create mode 100644 tk/win/rc/cursor22.cur create mode 100644 tk/win/rc/cursor24.cur create mode 100644 tk/win/rc/cursor26.cur create mode 100644 tk/win/rc/cursor28.cur create mode 100644 tk/win/rc/cursor2a.cur create mode 100644 tk/win/rc/cursor2c.cur create mode 100644 tk/win/rc/cursor2e.cur create mode 100644 tk/win/rc/cursor30.cur create mode 100644 tk/win/rc/cursor32.cur create mode 100644 tk/win/rc/cursor34.cur create mode 100644 tk/win/rc/cursor36.cur create mode 100644 tk/win/rc/cursor38.cur create mode 100644 tk/win/rc/cursor3a.cur create mode 100644 tk/win/rc/cursor3c.cur create mode 100644 tk/win/rc/cursor3e.cur create mode 100644 tk/win/rc/cursor40.cur create mode 100644 tk/win/rc/cursor42.cur create mode 100644 tk/win/rc/cursor44.cur create mode 100644 tk/win/rc/cursor46.cur create mode 100644 tk/win/rc/cursor48.cur create mode 100644 tk/win/rc/cursor4a.cur create mode 100644 tk/win/rc/cursor4c.cur create mode 100644 tk/win/rc/cursor4e.cur create mode 100644 tk/win/rc/cursor50.cur create mode 100644 tk/win/rc/cursor52.cur create mode 100644 tk/win/rc/cursor54.cur create mode 100644 tk/win/rc/cursor56.cur create mode 100644 tk/win/rc/cursor58.cur create mode 100644 tk/win/rc/cursor5a.cur create mode 100644 tk/win/rc/cursor5c.cur create mode 100644 tk/win/rc/cursor5e.cur create mode 100644 tk/win/rc/cursor60.cur create mode 100644 tk/win/rc/cursor62.cur create mode 100644 tk/win/rc/cursor64.cur create mode 100644 tk/win/rc/cursor66.cur create mode 100644 tk/win/rc/cursor68.cur create mode 100644 tk/win/rc/cursor6a.cur create mode 100644 tk/win/rc/cursor6c.cur create mode 100644 tk/win/rc/cursor6e.cur create mode 100644 tk/win/rc/cursor70.cur create mode 100644 tk/win/rc/cursor72.cur create mode 100644 tk/win/rc/cursor74.cur create mode 100644 tk/win/rc/cursor76.cur create mode 100644 tk/win/rc/cursor78.cur create mode 100644 tk/win/rc/cursor7a.cur create mode 100644 tk/win/rc/cursor7c.cur create mode 100644 tk/win/rc/cursor7e.cur create mode 100644 tk/win/rc/cursor80.cur create mode 100644 tk/win/rc/cursor82.cur create mode 100644 tk/win/rc/cursor84.cur create mode 100644 tk/win/rc/cursor86.cur create mode 100644 tk/win/rc/cursor88.cur create mode 100644 tk/win/rc/cursor8a.cur create mode 100644 tk/win/rc/cursor8c.cur create mode 100644 tk/win/rc/cursor8e.cur create mode 100644 tk/win/rc/cursor90.cur create mode 100644 tk/win/rc/cursor92.cur create mode 100644 tk/win/rc/cursor94.cur create mode 100644 tk/win/rc/cursor96.cur create mode 100644 tk/win/rc/cursor98.cur create mode 100644 tk/win/rc/cygnus.ico create mode 100644 tk/win/rc/tk.ico create mode 100644 tk/win/rc/tk.rc create mode 100644 tk/win/rc/wish.ico create mode 100644 tk/win/rc/wish.rc create mode 100644 tk/win/rmd.bat create mode 100644 tk/win/stubs.c create mode 100644 tk/win/tk.def create mode 100644 tk/win/tkWin.h create mode 100644 tk/win/tkWin32Dll.c create mode 100644 tk/win/tkWin3d.c create mode 100644 tk/win/tkWinButton.c create mode 100644 tk/win/tkWinClipboard.c create mode 100644 tk/win/tkWinColor.c create mode 100644 tk/win/tkWinCursor.c create mode 100644 tk/win/tkWinDefault.h create mode 100644 tk/win/tkWinDialog.c create mode 100644 tk/win/tkWinDraw.c create mode 100644 tk/win/tkWinEmbed.c create mode 100644 tk/win/tkWinFont.c create mode 100644 tk/win/tkWinImage.c create mode 100644 tk/win/tkWinInit.c create mode 100644 tk/win/tkWinInt.h create mode 100644 tk/win/tkWinKey.c create mode 100644 tk/win/tkWinMenu.c create mode 100644 tk/win/tkWinPixmap.c create mode 100644 tk/win/tkWinPointer.c create mode 100644 tk/win/tkWinPort.h create mode 100644 tk/win/tkWinRegion.c create mode 100644 tk/win/tkWinScrlbr.c create mode 100644 tk/win/tkWinSend.c create mode 100644 tk/win/tkWinWindow.c create mode 100644 tk/win/tkWinWm.c create mode 100644 tk/win/tkWinX.c create mode 100644 tk/win/winMain.c create mode 100644 tk/xlib/X11/X.h create mode 100644 tk/xlib/X11/Xatom.h create mode 100644 tk/xlib/X11/Xfuncproto.h create mode 100644 tk/xlib/X11/Xlib.h create mode 100644 tk/xlib/X11/Xutil.h create mode 100644 tk/xlib/X11/cursorfont.h create mode 100644 tk/xlib/X11/keysym.h create mode 100644 tk/xlib/X11/keysymdef.h create mode 100644 tk/xlib/X11/license.terms create mode 100644 tk/xlib/license.terms create mode 100644 tk/xlib/xbytes.h create mode 100644 tk/xlib/xcolors.c create mode 100644 tk/xlib/xdraw.c create mode 100644 tk/xlib/xgc.c create mode 100644 tk/xlib/ximage.c create mode 100644 tk/xlib/xutil.c diff --git a/itcl/ChangeLog b/itcl/ChangeLog new file mode 100644 index 00000000000..3388565e1a6 --- /dev/null +++ b/itcl/ChangeLog @@ -0,0 +1,290 @@ +2000-01-26 DJ Delorie + + * itcl/win/dllEntryPoint.c (DllMain): Use _imp__ instead of __imp_ + * itk/win/dllEntryPoint.c (DllMain): ditto + * itcl/generic/itcl_methods.c (tclByteCodeType): ditto, but unused + +1999-12-21 Mo DeJong + + * itcl/generic/itcl_parse.c: Applied patch to fix + crash when tearing down the itcl::parser namespace. + +1999-09-23 Ben Elliston + + * itcl/unix/configure.in: Quoting fix for AC_EGREP_CPP. + * itcl/win/configure.in: Likewise. + * itk/unix/configure.in: Likewise. + * itk/win/configure.in: Likewise. + * itcl/unix/configure: Regenerate. + * itcl/win/configure: Likewise. + * itk/unix/configure: Likewise. + * itk/win/configure: Likewise. + +1999-09-22 DJ Delorie + + * itcl/win/Makefile.in (ITCL_LIB_DIR etc): use @dir@ form + * itk/win/Makefile.in (INSTALL_LIB_DIR etc): ditto + +1999-07-13 Jonathan Larmour + + * itcl/unix/configure.in: Workaround bug in autoconf 2.13 by adding + an extra AC_PROG_CPP before AC_EGREP_CPP + * itcl/win/configure.in: Likewise + * itk/unix/configure.in: Likewise + * itk/win/configure.in: Likewise + * itcl/unix/configure: regenerated + * itcl/win/configure: regenerated + * itk/unix/configure: regenerated + * itk/win/configure: regenerated + +1999-06-16 Keith Seitz + + * itk/win/Makefile.in (install-man): Don't install *.3 -- there + are no manpages in this section. + +1999-03-26 Martin Hunt + + * iwidgets3.0.0/generic/scrolledwidget.itk + (iwidgets::Scrolledwidget::sbwidth): The default width of 15 + was incompatible with Windows. Change the default to "" and + only actually change the scrollbar width if someone changes + it to something else. + +1999-03-22 James Ingham + + * itcl/unix/configure.in: Leave the LD_SEARCH_PATH off of + MAKE_LIBS. This loses on OSF with --enable-shared. + * itcl/unix/configure: regenerated + * itk/unix/configure.in: Leave the LD_SEARCH_PATH off of + MAKE_LIBS. This lses on OSF with --enable-shared. + * itk/unix/configure: regenerated + +1999-03-18 Keith Seitz + + * iwidgets3.0.0/unix/Makefile.in (install-libraries): Don't bother with + making symlinks for other versions of iwidgets -- we don't use them. + +1999-03-03 James Ingham + + * iwidgets3.0.0/generic/labeledframe.itk (_reconfigure): Make sure + that the widget has not been destroyed while in the update + idletasks. FIXME - see if we can eliminate the need for this + update. + + * iwidgets3.0.0/generic/labeledframe.itk (clientHandlesConfigure): + Added method to allow the user of the labeled frame to do the + reconfigure, so this can be batched up and reduce flashing. + +1999-03-02 DJ Delorie + + * itk/win/configure.in: support cross compiling, fix syntax error + in BASELIBS. + * itk/win/configure: regenerate + +1999-03-02 Syd Polk + + * itk/win/configure.in: Generated incorrect library name for cygwin + build. + * itk/win/configure: Regenerate. + +Fri Feb 26 12:48:01 1999 Geoffrey Noer + + * configure.in: Change "cygwin32*" check to "cygwin*". + * configure: Regenerate. + * itcl/win/configure.in: Change "cygwin32*" check to "cygwin*". + * itcl/win/configure: Regenerate. + * itk/win/configure.in: Change "cygwin32*" check to "cygwin*". + * itk/win/configure: Regenerate. + +1999-02-24 James Ingham + + * iwidgets3.0.0/generic/labeledframe.itk: Make it derive from Widget + not Archetype (which was a BAD idea). Add an interposing frame so + you didn't have to much with the highlightthickness of the + MegaWidget itself. Doing this allows you to actually use the + labeledframe in derived classes. + * iwidgets3.0.0/generic/scrolledwidget.itk: Derive from labeledframe, + not labeledwidget. This way you can add a relief around the + label, which looks better for scrolled text, scrolled listboxes + and scrolled canvases. + * iwidgets3.0.0/generic scrolledcanvas.itk, scrolledlistbox.itk, + scrolledtext.itk: Pushed throught the changes needed to get the + derivation from labeledframe to work. + +1999-02-22 Syd Polk + + * itcl/win/configure.in: Export ITCL_SH. + * itcl/win/configure: Regenerate. + + * itk/win/configure.in: Set all of the build components based on cygwin + vs. Visual C++. + Fix ITK_BUILD_LIB_SPEC, ITK_LIB_SPEC, ITK_LIB_FULL_PATH. + * itk/win/configure: Regenerate. + +1999-02-19 Syd Polk + + * itk/win/rc/itk.rc: Fixed problem in .rc file that winres did not + like. + +1999-02-18 Syd Polk + + * itcl/unix/Makefile.in: "make install" was failing + with itclConfig.sh. + + * itcl/win/configure.in: Export ITCL_BUILD_LIB_SPEC and + ITCL_LIB_FULL_PATH. + * itcl/win/configure: Regnerate. + * itcl/win/Makefile.in: Minor corrections to dependencies. + + * itk/generic/itk_cmds.c: Fixed newline in constant. + + * itk/win/configure.in: Added AC_OBJEXT. + * itk/win/configure: Regenerated. + + * itk/win/Makefile.in: Added OBJEXT. Overhauled for MSVC + build. + +1999-02-18 James Ingham + + * itcl/unix/Makefile.in itk/unix/Makefile.in: fix the install + target so it points to itclConfig.sh in the itcl or itk, rather + than in the itcl/unix or itk/unix directories. + * itcl/win/configure.in: use the ITCLCYGRC & ITCLCYGSHRC variables + in the name of the windres output file. + * itcl.rc: For some reason, windres is choking on STRINGIFY of the + Itcl version numbers. Some day we should figure out why. For + now, I just put in the version numbers by hand. + +1999-02-10 Syd Polk + + * Makefile.in: Propogate make errors from subdirectories + back to the top level. + + * itcl/win/configure.in: Moved itclConfig.sh. Fixed problems + finding tclConfig.sh and tkConfig.sh. + Figure out all of the appropriate directories at this level + so that cygwin and msvc differences can be accounted for. + * itcl/win/configure: Regenerate. + * itcl/win/Makefile.in: Use OBJEXT. + Set build directories correctly. + Set -DDLL_BUILD, -DSTATIC_BUILD, and -DBUILD_itcl correctly. + + * itk/win/configure.in: Moved itkConfig.sh. Look for itclConfig.sh + in new place. Fixed problems finding tclConfig.sh and tkConfig.sh. + * itk/win/configure: Regnerate. + + * itcl/generic/itcl_cmds.c (initScript): Fixed broken new line. + + * itcl/win/dllEntryPoint.c: DllMain was not setup correctly for + Microsoft. + +1999-02-09 James Ingham + + * itcl/itcl/unix/configure.in: + * itcl/itk/unix/configure.in: + LD_SEARCH_FLAGS should NOT be passed to the library build line. + + * itcl/itcl/unix/configure: + * itcl/itk/unix/configure: + regenerate. + + * itcl/itk/generic/itk_archetype.c: Put a few CYGNUS LOCAL markers + in around the 8.1 Fixups that I had left out. + +1992-02-08 Syd Polk + + * itcl/itcl/unix/configure.in: Moved itclConfig.sh.in up a level + so that building on Windows will work. + Added exporting of itclsh so that other parts of the build + tree can call it. + Added exporting of TCL_CFLAGS. + Added exporting of TCL_LIB_FULL_PATH. + Generate and export ITCL_LIB_FULL_PATH. + * itcl/itcl/unix/configure: Regenerated + * itcl/itcl/unix/Makefile.in: Use TCL_CFLAGS so that + -fwritable-strings is enabled. + Add dependency for TCL_LIB_FULL_PATH. + * itcl/itclConfig.sh.in: Moved from lower directory. + * itcl/itk/unix/configure.in: Moved itkConfig.sh.in up a level. + Added export of TCL_CFLAGS. + Added export of TCL_LIB_FULL_PATH, TK_LIB_FULL_PATH, + ITCL_LIB_FULL_PATH, and ITK_LIB_FULL_PATH. + * itcl/itk/unix/Makefile.in: Use TCL_CFLAGS so that + -fwritable-strings is enabled. + Add dependencies for TCL_LIB_FULL_PATH and TK_LIB_FULL_PATH. + * itcl/itk/unix/configure: Regenerated. + * itcl/itkConfig.sh.in: Moved from a lwoer directory. + * itcl/iwidgets3.0.0/configure.in: Look for itclConfig.sh and + itkConfig.sh in different places. + +1999-02-05 James Ingham + + * itcl/itk/generic/itk_archetype.c (Itk_ArchCompAddCmd): + * itcl/itcl/generic/itcl_cmds.c (Itcl_ProtectionCmd): + itcl/itcl/generic/itcl_ensemble.c (Itcl_EnsembleCmd): + itcl/itcl/generic/itcl_methods.c (Itcl_EvalMemberCode): + (Itcl_ConstructBase): + itcl/itcl/generic/itcl_obsolete.c (ItclOldClassCmd): + itcl/itcl/generic/itcl_parse.c (Itcl_ClassCmd): + (Itcl_ClassProtectionCmd): + Fix up calls to Tcl_EvalObj for Tcl8.1. + + * itcl/itcl/unix/configure.in: + * itcl/itk/unix/configure.in: + Pick up CFLAGS from AC_PROG_CC rather than hard coding them. + * itcl/itcl/unix/configure: + * itcl/itk/unix/configure: + regenerate. + +1999-01-30 Brendan Kehoe + + * Makefile.in (install-info info install-check): Add these null + rules, for the standard build process to work.. + +1999-01-28 James Ingham + + * itcl/itcl/unix/configure.in: Check the TCL_LIB_VERSIONS_OK + variable, and strip out dots if it is nodots. + * itcl/itk/unix/configure.in: Check the TCL_LIB_VERSIONS_OK + variable, and strip out dots if it is nodots. + * itcl/itcl/unix/configure: regenerate. + * itcl/itk/unix/configure: regenerate. + +1999-01-21 James Ingham + + * itcl/library/init.tcl (auto_import): Comment out this function. + It does not work, because it can not populate the source + namespace's export list. There is no easy way to fix this, and + since it is just an optimization over the original Tcl proc, we + will just use Tcl one for now. + +1999-01-20 James Ingham + + * itcl/library/init.tcl: updated to Itcl 3.0.1. Does not force + the addition of class to the auto_mkindex_parser namespace, but + uses the namespace import instead. + +1998-12-15 Martin M. Hunt + + * iwidgets3.0.0/generic/panedwindow.itk: Reverted back to original + distribution. The new panedwindow widget is now in libgui. + + * iwidgets3.0.0/generic/pane.itk: Reverted. + +1998-12-11 Martin M. Hunt + + * iwidgets3.0.0/generic/panedwindow.itk: Major changes to + support panes that are fixed (non-resizable). This allows + the panedwindow to be used as a more general purpose + container widget where individual parts may or may not be + resizable. + + * iwidgets3.0.0/generic/pane.itk (iwidgets::Pane): Added + -resizable option to support non-resizable panes. + +1998-12-08 Martin M. Hunt + + * iwidgets3.0.0/generic/panedwindow.itk: Major changes to + the default look and resizing method to be more modern, more + windows-like, and work better when widgets are placed in childsites. + diff --git a/itcl/INCOMPATIBLE b/itcl/INCOMPATIBLE new file mode 100644 index 00000000000..b0e2bd15d3a --- /dev/null +++ b/itcl/INCOMPATIBLE @@ -0,0 +1,102 @@ + +As much as possible, I've tried to make itcl3.0 backward-compatible +with earlier releases. The class definition syntax has not changed +at all from itcl2.2, and the old itcl1.x syntax is still supported. +But you'll notice changes related to namespaces. John Ousterhout +adopted a slightly different namespace model for Tcl8. The syntax +of the "namespace" command is different, as well as the semantics +for command/variable lookups and imports. Also, John Ousterhout +failed to adopt ensembles into the Tcl core, so itcl can't add +functions like "info objects" and "info classes" into the usual "info" +command. These functions have been moved to a new "itcl::find" command. + +The [incr Widgets] package has changed quite a bit. There are many +new widgets, and some of the existing widgets were streamlined--some +of the widget options were removed to improve performance. For details, +see the "CHANGES" file in the iwidgets3.0.0 directory. Because there +are a lot of changes, this distribution contains the iwidgets2.2.0 +package, which is backward-compatible with the existing [incr Widgets]. + +Following is a quick summary of changes, to serve as a porting guide. + + +----------------------------------|------------------------------------- + You have code like this... | change to this... +----------------------------------|------------------------------------- + namespace foo {...} | namespace eval foo {...} + | + delete namespace foo | namespace delete foo + | + info which -namespace $name | if {![string match ::* $name]} { + | set name [namespace current]::$name + | } + | + info context | namespace current + | + info objects ... | itcl::find objects ... + | + info classes ... | itcl::find classes ... + | + In itcl2.2, commands/classes | In Tcl8.0, all commands/classes that + could be found in any namespace | are not in the global namespace must + in a hierarchy. So within a | be qualified. For example, the + namespace like "iwidgets" you | "iwidgets" namespace has a bunch of + could use simple names like: | classes within it. You must always + | refer to these classes with qualified + | names, like this: + | + Labeledwidget::alignlabels ... | iwidgets::Labeledwidget::alignlabels ... + Pane #auto | iwidgets::Pane #auto + | + | + In itcl2.2, the "global" | In Tcl8.0, the "variable" command is + command was used to access | used to access variables in a namespace: + variables in a namespace: | + | + namespace foo { | namespace eval foo { + variable x 0 | variable x 0 + proc example {} { | proc example {} { + global x | variable x + return $x | return $x + } | } + } | } + | + | + public itk_component add... | itk_component add ... + protected itk_component add... | itk_component add -protected ... + private itk_component add... | itk_component add -private ... + | + | + + OTHER DIFFERENCES +------------------------------------------------------------------------ +- You can now use instance variables (along with the usual common + variables) with the "scope" command. Thus, you're no longer forced + to use the trick with a common array like: [scope modes($this)] + +- All widget/mega-widget access commands (e.g., ".foo.bar") are + installed in the global namespace. Therefore, they can be accessed + from any namespace context. + +- The [incr Widgets] package used to be loaded by default. You must + now use the "package require" command to load it explicitly: + + package require Iwidgets <-- loads the lastest (iwidgets3.0.0) + package require -exact Iwidgets 2.2 <-- loads the older release + +- Command/variable names are now reported with fully-qualified names + in "info" inquiries and in error messages. + +- No public/protected/private declarations outside of class definitions + +- The "scope" command used to be more or less the same as the "code" + command. In itcl3.x, "scope" is only for variables, and if a variable + is not recognized, you'll get an error. + +- The "code" command used to return a value like "@scope ...". It now + returns "namespace inscope ...", to be compatible with Tcl8. + +- The prototypes for Itcl_RegisterC and Itcl_FindC have changed. You + can now include ClientData when you register C functions. Also, there + is a new Itcl_RegisterObjC function for (objc,objv)-style command + handlers. diff --git a/itcl/Makefile.in b/itcl/Makefile.in new file mode 100644 index 00000000000..7e2c2872c1e --- /dev/null +++ b/itcl/Makefile.in @@ -0,0 +1,94 @@ +# +# This file is the toplevel Makefile for [incr Tcl]. If it has the +# name "Makefile.in" then it is a template for a Makefile; to generate +# the actual Makefile, run "./configure", which is a configuration +# script generated by the "autoconf" program (constructs like +# "@foo@" will get replaced in the actual Makefile. +# +# RCS: $Id$ + +# Default top-level directories in which to install architecture- +# specific files (exec_prefix) and machine-independent files such +# as scripts (prefix). The values specified here may be overridden +# at configure-time with the --exec-prefix and --prefix options +# to the "configure" script. + +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +subdirs = @subdirs@ + +# Some versions of make, like SGI's, use the following variable to +# determine which shell to use for executing commands: +SHELL = /bin/sh + +all: + @for dir in $(subdirs) ; do \ + if (echo "Making in $$dir"; cd $$dir && $(MAKE) $@); \ + then true; else exit 1; fi \ + done; + +test: + for dir in $(subdirs) ; do \ + if (echo "Making in $$dir"; cd $$dir && $(MAKE) $@); \ + then true; else exit 1; fi \ + done; + +static: + for dir in $(subdirs) ; do \ + if (echo "Making in $$dir"; cd $$dir && $(MAKE) $@); \ + then true; else exit 1; fi \ + done; + +standalone: + for dir in $(subdirs) ; do \ + if (echo "Making in $$dir"; cd $$dir && $(MAKE) $@); \ + then true; else exit 1; fi \ + done; + +plusplus: + for dir in $(subdirs) ; do \ + if (echo "Making in $$dir"; cd $$dir && $(MAKE) $@); \ + then true; else exit 1; fi \ + done; + +install: + for dir in $(subdirs) ; do \ + if (echo "Making in $$dir"; cd $$dir && $(MAKE) $@); \ + then true; else exit 1; fi \ + done; + +install-binaries: + for dir in $(subdirs) ; do \ + if (echo "Making in $$dir"; cd $$dir && $(MAKE) $@); \ + then true; else exit 1; fi \ + done; + +install-libraries: + for dir in $(subdirs) ; do \ + if (echo "Making in $$dir"; cd $$dir && $(MAKE) $@); \ + then true; else exit 1; fi \ + done; + +install-info info install-check: + +clean: + for dir in $(subdirs) ; do \ + if (echo "Making in $$dir"; cd $$dir && $(MAKE) $@); \ + then true; else exit 1; fi \ + done; + +distclean: + rm -f Makefile config.log config.status config.cache + for dir in $(subdirs) ; do \ + if (echo "Making in $$dir"; cd $$dir && $(MAKE) $@); \ + then true; else exit 1; fi \ + done; + +# +# Target to create a proper Tcl distribution from information in the +# master source directory. DISTDIR must be defined to indicate where +# to put the distribution. +# + +# DO NOT DELETE THIS LINE -- make depend depends on it. diff --git a/itcl/TODO b/itcl/TODO new file mode 100644 index 00000000000..8fc11e22b74 --- /dev/null +++ b/itcl/TODO @@ -0,0 +1,181 @@ +======================================================================= + Following is a list of notes describing things which might be + fixed or changed in a future release of [incr Tcl] +======================================================================= + +Handle this case more elegantly: + +class Foo { + constructor {args} { + _init + } + proc _init {} { + puts "once!" + proc _init {} {} + } +} +Foo #auto +Foo #auto + + +itcl "wish" list +------------------------------------------------------------------ +- add virtual inheritance +- add "border" type to canvas widget +- add "validate" and "valid" commands for type validation +- add "unknownvar" and provide access to object data members: "obj.var" +- check namespace [info class] {...} as a replacement for "virtual" +- fix "auto_load_all" problem in Tcl-DP + (Their implementation uses "info commands" to verify that a command + has been successfully autoloaded, but absolute command names like + "::iwidgets::fileselectiondialog" don't show up.) +- fix "auto_load" mechanism to be extensible like "unknown" +- fix Itcl_RegisterC() to support ClientData +- core dump with "cmdtrace" (tclX thing?) + +- ideas from Nelson Macy: + - add "delegate" keyword for inheritance via composition? + - add "forward" keyword for implementing error handlers + - add "get" code to public variables for "cget" access + +- equivalent of constructor/destructor for classes +- protected/private recognized for constructor/destructor +- add something like Tk_CreateWidgetCommand() for widget developers + + +itcl documentation cleanup +------------------------------------------------------------------ +- add "Finance: Trading Systems" to commercial uses of Itcl (Deshaw) +- update doc: "config" code also gets invoked on startup for itk widgets +- update doc: add to FAQ: class with common array interacts with Tk widget + +itcl "to do" list +------------------------------------------------------------------ + +- write "auto_load_all" proc for Tcl-DP + +- bad errorInfo: + > More specifically, the constructor for the class did the following: + > + > set hull [info namespace tail $this] + > ::frame $hull + > + > One of the class variables had a configuration script: + > + > public variable textvariable "" { + > if { $textvariable != "" } { + > regsub "\\(.*\\)" $textvariable "" global + > global ::$global + > trace variable $textvariable w "$hull adjust" + > } + > } + +- add "@body" in as many places as possible to support Tcl compiler + +- check out itcl with Tix: + lappend auto_path $env(TIX_LIBRARY) + source "$env(IWIDGETS_LIBRARY)/init.iwidgets" + + iwidgets::Dialog ._Arcattributes -title "Code: Arc Annotations" + -modality application + + set attrframe [._Arcattributes childsite] + + tixScrolledHList $attrframe.ports + [$attrframe.ports subwidget hlist] configure -selectmode browse + + pack $attrframe.ports -expand yes -fill both -padx 10 -pady 10 + + ._Arcattributes activate + + +------------------------------------------------------------------ + +To: ig4!att!cas.org!lvirden (Larry W. Virden) (lvirden@cas.org) +cc: michael.mclennan@att.com +Subject: Re: Question concerning the Japanese patches for Tcl 7.4 +In-reply-to: Your message of "Fri, 05 Jan 1996 06:43:46 EST." + <9601051143.AA15368@cas.org> +-------- +Your message dated: Fri, 05 Jan 1996 06:43:46 EST +> +> The following instructions refer to the software which enables one to +> build a KANJI supporting version of Tcl/Tk. Perhaps a note in the itcl +> instructions letting folk know this package is also compatible would be +> useful. +> +> +> ----- Begin Included Message ----- +> +> >From nisinaka@sra.co.jp Thu Jan 4 00:09:52 1996 +> Received: from srv07s4m by srv99dr.cas.org (5.65/CAS-1.23) +> id AA29886; Thu, 4 Jan 1996 00:09:52 -0500 +> Received: from srv01s4.cas.org by srv07s4m.cas.org (5.0/CAS-1.23) +> id AA11865; Thu, 4 Jan 1996 00:09:50 +0500 +> Received: from sraigw.sra.co.jp by srv01s4.cas.org (4.1/CAS-1.23) +> id AA25691; Thu, 4 Jan 96 00:09:39 EST +> Received: from sranhe.sra.co.jp by sraigw.sra.co.jp +> (8.6.12+2.4W3/3.4W-2.1) +> id OAA06131; Thu, 4 Jan 1996 14:09:32 +0900 +> Received: from srashc.sra.co.jp (srashc [133.137.44.5]) by +> sranhe.sra.co.jp (8.6.12+2.4W3/3.4W-srambox) with ESMTP id OAA00935; +> Thu, 4 Jan 1996 14:06:26 +0900 +> Received: from srashc.sra.co.jp (localhost [127.0.0.1]) by +> srashc.sra.co.jp (8.6.12+2.4W3/3.4W-sra) with ESMTP id OAA25546; Thu, 4 +> Jan 1996 14:09:30 +0900 +> To: lvirden (Larry W. Virden, x2487) +> Cc: tcl-jp-bugs@sra.co.jp +> Reply-To: nisinaka@sra.co.jp +> Subject: Re: Question concerning the Japanese patches for Tcl 7.4 +> In-Reply-To: Your message of Tue, 02 Jan 1996 10:32:32 EST. +> <9601021032.AA2226@cas.org> +> Date: Thu, 04 Jan 1996 14:09:29 +0900 +> Message-Id: <25544.820732169@srashc.sra.co.jp> +> From: NISHINAKA Yoshiyuki +> Status: RO +> X-Lines: 31 +> +> > I notice that incr tcl 2.0 has been released with it's own, +> customized, +> > version of Tcl 7.4/Tk 4.0. Do any of you use itcl? If so, I +> wondered if you +> > had thought of constructing a specialized set of patches which could +> be +> > used with itcl. +> +> I have just got itcl2.0 and tried it with our Japanization +> patches. Seems it works fine. +> +> What I really did was as follows: +> +> (1) Unpack itcl2.0.tar.gz. +> +> (2) Run `configure' at the directory `itcl2.0'. +> +> (3) Apply `tcl7.4p3jp-patch' at the directory `itcl2.0/tcl7.4'. +> `Makefile.in.rej' was the only rejected file, so apply it +> manually. +> +> (4) Apply `tk4.0p3jp-patch' at the directory `itcl2.0/tk4.0'. +> There was no rejected file. +> +> (5) Make symbolic link from `tcl7.4' to `tcl7.4jp'. +> +> (6) Make all. +> +> +> I haven't seriously tested yet though, `make test' was passed +> and the Japanese translation of `demos/widgets' works fine. +> +> +> Yosh Nishinaka (nisinaka@sra.co.jp) +> +> +> ----- End Included Message ----- +> +> +> -- +> :s Larry W. Virden INET: lvirden@cas.org +> :s <*> +> :s Unless explicitly stated to the contrary, nothing in this posting should +> :s be construed as representing my employer's opinions. diff --git a/itcl/aclocal.m4 b/itcl/aclocal.m4 new file mode 100644 index 00000000000..75024565f73 --- /dev/null +++ b/itcl/aclocal.m4 @@ -0,0 +1,524 @@ +dnl written by Rob Savoye for Cygnus Support +dnl major rewriting for Tcl 7.5 by Don Libes + +dnl CY_AC_PATH_TCLCONFIG and CY_AC_LOAD_TCLCONFIG should be invoked +dnl (in that order) before any other TCL macros. Similarly for TK. + +dnl CYGNUS LOCAL: This gets the right posix flag for gcc +AC_DEFUN(CY_AC_TCL_LYNX_POSIX, +[AC_REQUIRE([AC_PROG_CC])AC_REQUIRE([AC_PROG_CPP]) +AC_MSG_CHECKING([if running LynxOS]) +AC_CACHE_VAL(ac_cv_os_lynx, +[AC_EGREP_CPP(yes, +[/* + * The old Lynx "cc" only defines "Lynx", but the newer one uses "__Lynx__" + */ +#if defined(__Lynx__) || defined(Lynx) +yes +#endif +], ac_cv_os_lynx=yes, ac_cv_os_lynx=no)]) +# +if test "$ac_cv_os_lynx" = "yes" ; then + AC_MSG_RESULT(yes) + AC_DEFINE(LYNX) + AC_MSG_CHECKING([whether -mposix or -X is available]) + AC_CACHE_VAL(ac_cv_c_posix_flag, + [AC_TRY_COMPILE(,[ + /* + * This flag varies depending on how old the compiler is. + * -X is for the old "cc" and "gcc" (based on 1.42). + * -mposix is for the new gcc (at least 2.5.8). + */ + #if defined(__GNUC__) && __GNUC__ >= 2 + choke me + #endif + ], ac_cv_c_posix_flag=" -mposix", ac_cv_c_posix_flag=" -X")]) + CC="$CC $ac_cv_c_posix_flag" + AC_MSG_RESULT($ac_cv_c_posix_flag) + else + AC_MSG_RESULT(no) +fi +]) + +# +# Sometimes the native compiler is a bogus stub for gcc or /usr/ucb/cc. This +# makes configure think it's cross compiling. If --target wasn't used, then +# we can't configure, so something is wrong. We don't use the cache +# here cause if somebody fixes their compiler install, we want this to work. +AC_DEFUN(CY_AC_C_WORKS, +[# If we cannot compile and link a trivial program, we can't expect anything to work +AC_MSG_CHECKING(whether the compiler ($CC) actually works) +AC_TRY_COMPILE(, [/* don't need anything here */], + c_compiles=yes, c_compiles=no) + +AC_TRY_LINK(, [/* don't need anything here */], + c_links=yes, c_links=no) + +if test x"${c_compiles}" = x"no" ; then + AC_MSG_ERROR(the native compiler is broken and won't compile.) +fi + +if test x"${c_links}" = x"no" ; then + AC_MSG_ERROR(the native compiler is broken and won't link.) +fi +AC_MSG_RESULT(yes) +]) + +AC_DEFUN(CY_AC_PATH_TCLH, [ +# +# Ok, lets find the tcl source trees so we can use the headers +# Warning: transition of version 9 to 10 will break this algorithm +# because 10 sorts before 9. We also look for just tcl. We have to +# be careful that we don't match stuff like tclX by accident. +# the alternative search directory is involked by --with-tclinclude +# +no_tcl=true +AC_MSG_CHECKING(for Tcl private headers) +AC_ARG_WITH(tclinclude, [ --with-tclinclude directory where tcl private headers are], with_tclinclude=${withval}) +AC_CACHE_VAL(ac_cv_c_tclh,[ +# first check to see if --with-tclinclude was specified +if test x"${with_tclinclude}" != x ; then + if test -f ${with_tclinclude}/tclInt.h ; then + ac_cv_c_tclh=`(cd ${with_tclinclude}; pwd)` + elif test -f ${with_tclinclude}/generic/tclInt.h ; then + ac_cv_c_tclh=`(cd ${with_tclinclude}/generic; pwd)` + else + AC_MSG_ERROR([${with_tclinclude} directory doesn't contain private headers]) + fi +fi + +# next check if it came with Tcl configuration file +if test x"${ac_cv_c_tclconfig}" != x ; then + if test -f $ac_cv_c_tclconfig/../generic/tclInt.h ; then + ac_cv_c_tclh=`(cd $ac_cv_c_tclconfig/../generic; pwd)` + fi +fi + +# next check in private source directory +# +# since ls returns lowest version numbers first, reverse its output +if test x"${ac_cv_c_tclh}" = x ; then + for i in \ + ${srcdir}/../tcl \ + `ls -dr ${srcdir}/../tcl[[7-9]]* 2>/dev/null` \ + ${srcdir}/../../tcl \ + `ls -dr ${srcdir}/../../tcl[[7-9]]* 2>/dev/null` \ + ${srcdir}/../../../tcl \ + `ls -dr ${srcdir}/../../../tcl[[7-9]]* 2>/dev/null ` ; do + if test -f $i/generic/tclInt.h ; then + ac_cv_c_tclh=`(cd $i/generic; pwd)` + break + fi + done +fi +# finally check in a few common install locations +# +# since ls returns lowest version numbers first, reverse its output +if test x"${ac_cv_c_tclh}" = x ; then + for i in \ + `ls -dr /usr/local/src/tcl[[7-9]]* 2>/dev/null` \ + `ls -dr /usr/local/lib/tcl[[7-9]]* 2>/dev/null` \ + /usr/local/src/tcl \ + /usr/local/lib/tcl \ + ${prefix}/include ; do + if test -f $i/generic/tclInt.h ; then + ac_cv_c_tclh=`(cd $i/generic; pwd)` + break + fi + done +fi +# see if one is installed +if test x"${ac_cv_c_tclh}" = x ; then + AC_HEADER_CHECK(tclInt.h, ac_cv_c_tclh=installed, ac_cv_c_tclh="") +fi +]) +if test x"${ac_cv_c_tclh}" = x ; then + TCLHDIR="# no Tcl private headers found" + AC_MSG_ERROR([Can't find Tcl private headers]) +fi +if test x"${ac_cv_c_tclh}" != x ; then + no_tcl="" + if test x"${ac_cv_c_tclh}" = x"installed" ; then + AC_MSG_RESULT([is installed]) + TCLHDIR="" + else + AC_MSG_RESULT([found in ${ac_cv_c_tclh}]) + # this hack is cause the TCLHDIR won't print if there is a "-I" in it. + TCLHDIR="-I${ac_cv_c_tclh}" + fi +fi + +AC_SUBST(TCLHDIR) +]) + + +AC_DEFUN(CY_AC_PATH_TCLCONFIG, [ +# +# Ok, lets find the tcl configuration +# First, look for one uninstalled. +# the alternative search directory is invoked by --with-tclconfig +# + +if test x"${no_tcl}" = x ; then + # we reset no_tcl in case something fails here + no_tcl=true + AC_ARG_WITH(tclconfig, [ --with-tclconfig directory containing tcl configuration (tclConfig.sh)], + with_tclconfig=${withval}) + AC_MSG_CHECKING([for Tcl configuration]) + AC_CACHE_VAL(ac_cv_c_tclconfig,[ + + # First check to see if --with-tclconfig was specified. + if test x"${with_tclconfig}" != x ; then + if test -f "${with_tclconfig}/tclConfig.sh" ; then + ac_cv_c_tclconfig=`(cd ${with_tclconfig}; pwd)` + else + AC_MSG_ERROR([${with_tclconfig} directory doesn't contain tclConfig.sh]) + fi + fi + + # then check for a private Tcl installation + if test x"${ac_cv_c_tclconfig}" = x ; then + for i in \ + ../tcl \ + `ls -dr ../tcl[[7-9]]* 2>/dev/null` \ + ../../tcl \ + `ls -dr ../../tcl[[7-9]]* 2>/dev/null` \ + ../../../tcl \ + `ls -dr ../../../tcl[[7-9]]* 2>/dev/null` ; do + if test -f "$i/unix/tclConfig.sh" ; then + ac_cv_c_tclconfig=`(cd $i/unix; pwd)` + break + fi + done + fi + # check in a few common install locations + if test x"${ac_cv_c_tclconfig}" = x ; then + for i in `ls -d ${prefix}/lib /usr/local/lib 2>/dev/null` ; do + if test -f "$i/tclConfig.sh" ; then + ac_cv_c_tclconfig=`(cd $i; pwd)` + break + fi + done + fi + # check in a few other private locations + if test x"${ac_cv_c_tclconfig}" = x ; then + for i in \ + ${srcdir}/../tcl \ + `ls -dr ${srcdir}/../tcl[[7-9]]* 2>/dev/null` ; do + if test -f "$i/unix/tclConfig.sh" ; then + ac_cv_c_tclconfig=`(cd $i/unix; pwd)` + break + fi + done + fi + ]) + if test x"${ac_cv_c_tclconfig}" = x ; then + TCLCONFIG="# no Tcl configs found" + AC_MSG_WARN(Can't find Tcl configuration definitions) + else + no_tcl= + TCLCONFIG=${ac_cv_c_tclconfig}/tclConfig.sh + AC_MSG_RESULT(found $TCLCONFIG) + fi +fi +]) + +# Defined as a separate macro so we don't have to cache the values +# from PATH_TCLCONFIG (because this can also be cached). +AC_DEFUN(CY_AC_LOAD_TCLCONFIG, [ + . $TCLCONFIG + +dnl AC_SUBST(TCL_VERSION) +dnl AC_SUBST(TCL_MAJOR_VERSION) +dnl AC_SUBST(TCL_MINOR_VERSION) +dnl AC_SUBST(TCL_CC) + AC_SUBST(TCL_DEFS) + +dnl not used, don't export to save symbols +dnl AC_SUBST(TCL_LIB_FILE) + + AC_SUBST(TCL_LIBS) +dnl not used, don't export to save symbols +dnl AC_SUBST(TCL_PREFIX) + +dnl not used, don't export to save symbols +dnl AC_SUBST(TCL_EXEC_PREFIX) + + AC_SUBST(TCL_SHLIB_CFLAGS) + AC_SUBST(TCL_SHLIB_LD) +dnl don't export, not used outside of configure +dnl AC_SUBST(TCL_SHLIB_LD_LIBS) +dnl AC_SUBST(TCL_SHLIB_SUFFIX) +dnl not used, don't export to save symbols +dnl AC_SUBST(TCL_DL_LIBS) + AC_SUBST(TCL_LD_FLAGS) +dnl don't export, not used outside of configure + AC_SUBST(TCL_LD_SEARCH_FLAGS) +dnl AC_SUBST(TCL_COMPAT_OBJS) + AC_SUBST(TCL_RANLIB) + AC_SUBST(TCL_BUILD_LIB_SPEC) + AC_SUBST(TCL_LIB_SPEC) +dnl AC_SUBST(TCL_LIB_VERSIONS_OK) + +dnl not used, don't export to save symbols +dnl AC_SUBST(TCL_SHARED_LIB_SUFFIX) + +dnl not used, don't export to save symbols +dnl AC_SUBST(TCL_UNSHARED_LIB_SUFFIX) +]) + +# Warning: Tk definitions are very similar to Tcl definitions but +# are not precisely the same. There are a couple of differences, +# so don't do changes to Tcl thinking you can cut and paste it do +# the Tk differences and later simply substitute "Tk" for "Tcl". +# Known differences: +# - Acceptable Tcl major version #s is 7-9 while Tk is 4-9 +# - Searching for Tcl includes looking for tclInt.h, Tk looks for tk.h +# - Computing major/minor versions is different because Tk depends on +# headers to Tcl, Tk, and X. +# - Symbols in tkConfig.sh are different than tclConfig.sh +# - Acceptable for Tk to be missing but not Tcl. + +AC_DEFUN(CY_AC_PATH_TKH, [ +# +# Ok, lets find the tk source trees so we can use the headers +# If the directory (presumably symlink) named "tk" exists, use that one +# in preference to any others. Same logic is used when choosing library +# and again with Tcl. The search order is the best place to look first, then in +# decreasing significance. The loop breaks if the trigger file is found. +# Note the gross little conversion here of srcdir by cd'ing to the found +# directory. This converts the path from a relative to an absolute, so +# recursive cache variables for the path will work right. We check all +# the possible paths in one loop rather than many seperate loops to speed +# things up. +# the alternative search directory is involked by --with-tkinclude +# +#no_tk=true +AC_MSG_CHECKING(for Tk private headers) +AC_ARG_WITH(tkinclude, [ --with-tkinclude directory where tk private headers are], with_tkinclude=${withval}) +AC_CACHE_VAL(ac_cv_c_tkh,[ +# first check to see if --with-tkinclude was specified +if test x"${with_tkinclude}" != x ; then + if test -f ${with_tkinclude}/tk.h ; then + ac_cv_c_tkh=`(cd ${with_tkinclude}; pwd)` + elif test -f ${with_tkinclude}/generic/tk.h ; then + ac_cv_c_tkh=`(cd ${with_tkinclude}/generic; pwd)` + else + AC_MSG_ERROR([${with_tkinclude} directory doesn't contain private headers]) + fi +fi + +# next check if it came with Tk configuration file +if test x"${ac_cv_c_tkconfig}" != x ; then + if test -f $ac_cv_c_tkconfig/../generic/tk.h ; then + ac_cv_c_tkh=`(cd $ac_cv_c_tkconfig/../generic; pwd)` + fi +fi + +# next check in private source directory +# +# since ls returns lowest version numbers first, reverse its output +if test x"${ac_cv_c_tkh}" = x ; then + for i in \ + ${srcdir}/../tk \ + `ls -dr ${srcdir}/../tk[[4-9]]* 2>/dev/null` \ + ${srcdir}/../../tk \ + `ls -dr ${srcdir}/../../tk[[4-9]]* 2>/dev/null` \ + ${srcdir}/../../../tk \ + `ls -dr ${srcdir}/../../../tk[[4-9]]* 2>/dev/null ` ; do + if test -f $i/generic/tk.h ; then + if test x"${TK_BUILD_INCLUDES}" != x; then + ac_cv_c_tkh=`echo "${TK_BUILD_INCLUDES}" | sed -e 's/^-I//'` + else + ac_cv_c_tkh=`(cd $i/generic; pwd)` + fi + break + fi + done +fi +# finally check in a few common install locations +# +# since ls returns lowest version numbers first, reverse its output +if test x"${ac_cv_c_tkh}" = x ; then + for i in \ + `ls -dr /usr/local/src/tk[[4-9]]* 2>/dev/null` \ + `ls -dr /usr/local/lib/tk[[4-9]]* 2>/dev/null` \ + /usr/local/src/tk \ + /usr/local/lib/tk \ + ${prefix}/include ; do + if test -f $i/generic/tk.h ; then + ac_cv_c_tkh=`(cd $i/generic; pwd)` + break + fi + done +fi +# see if one is installed +if test x"${ac_cv_c_tkh}" = x ; then + AC_HEADER_CHECK(tk.h, ac_cv_c_tkh=installed, ac_cv_c_tkh="") +fi +]) +if test x"${ac_cv_c_tkh}" != x ; then +# no_tk="" + if test x"${ac_cv_c_tkh}" = x"installed" ; then + AC_MSG_RESULT([is installed]) + TKHDIR="" + else + AC_MSG_RESULT([found in ${ac_cv_c_tkh}]) + # this hack is cause the TKHDIR won't print if there is a "-I" in it. + TKHDIR="-I${ac_cv_c_tkh}" + fi +else + TKHDIR="# no Tk directory found" + AC_MSG_WARN([Can't find Tk private headers]) + no_tk=true +fi + +AC_SUBST(TKHDIR) +]) + + +AC_DEFUN(CY_AC_PATH_TKCONFIG, [ +# +# Ok, lets find the tk configuration +# First, look for one uninstalled. +# the alternative search directory is invoked by --with-tkconfig +# + +if test x"${no_tk}" = x ; then + # we reset no_tk in case something fails here + no_tk=true + AC_ARG_WITH(tkconfig, [ --with-tkconfig directory containing tk configuration (tkConfig.sh)], + with_tkconfig=${withval}) + AC_MSG_CHECKING([for Tk configuration]) + AC_CACHE_VAL(ac_cv_c_tkconfig,[ + + # First check to see if --with-tkconfig was specified. + if test x"${with_tkconfig}" != x ; then + if test -f "${with_tkconfig}/tkConfig.sh" ; then + ac_cv_c_tkconfig=`(cd ${with_tkconfig}; pwd)` + else + AC_MSG_ERROR([${with_tkconfig} directory doesn't contain tkConfig.sh]) + fi + fi + + # then check for a private Tk library + if test x"${ac_cv_c_tkconfig}" = x ; then + for i in \ + ../tk \ + `ls -dr ../tk[[4-9]]* 2>/dev/null` \ + ../../tk \ + `ls -dr ../../tk[[4-9]]* 2>/dev/null` \ + ../../../tk \ + `ls -dr ../../../tk[[4-9]]* 2>/dev/null` ; do + if test -f "$i/unix/tkConfig.sh" ; then + ac_cv_c_tkconfig=`(cd $i/unix; pwd)` + break + fi + done + fi + # check in a few common install locations + if test x"${ac_cv_c_tkconfig}" = x ; then + for i in `ls -d ${prefix}/lib /usr/local/lib 2>/dev/null` ; do + if test -f "$i/tkConfig.sh" ; then + ac_cv_c_tkconfig=`(cd $i; pwd)` + break + fi + done + fi + # check in a few other private locations + if test x"${ac_cv_c_tkconfig}" = x ; then + for i in \ + ${srcdir}/../tk \ + `ls -dr ${srcdir}/../tk[[4-9]]* 2>/dev/null` ; do + if test -f "$i/unix/tkConfig.sh" ; then + ac_cv_c_tkconfig=`(cd $i/unix; pwd)` + break + fi + done + fi + ]) + if test x"${ac_cv_c_tkconfig}" = x ; then + TKCONFIG="# no Tk configs found" + AC_MSG_WARN(Can't find Tk configuration definitions) + else + no_tk= + TKCONFIG=${ac_cv_c_tkconfig}/tkConfig.sh + AC_MSG_RESULT(found $TKCONFIG) + fi +fi + +]) + +# Defined as a separate macro so we don't have to cache the values +# from PATH_TKCONFIG (because this can also be cached). +AC_DEFUN(CY_AC_LOAD_TKCONFIG, [ + if test -f "$TKCONFIG" ; then + . $TKCONFIG + fi + + AC_SUBST(TK_VERSION) +dnl not actually used, don't export to save symbols +dnl AC_SUBST(TK_MAJOR_VERSION) +dnl AC_SUBST(TK_MINOR_VERSION) + AC_SUBST(TK_DEFS) + +dnl not used, don't export to save symbols + dnl AC_SUBST(TK_LIB_FILE) + +dnl not used outside of configure +dnl AC_SUBST(TK_LIBS) +dnl not used, don't export to save symbols +dnl AC_SUBST(TK_PREFIX) + +dnl not used, don't export to save symbols +dnl AC_SUBST(TK_EXEC_PREFIX) + + AC_SUBST(TK_XINCLUDES) + AC_SUBST(TK_XLIBSW) + AC_SUBST(TK_BUILD_LIB_SPEC) + AC_SUBST(TK_LIB_SPEC) +]) + +# Check to see if we're running under Win32, without using +# AC_CANONICAL_*. If so, set output variable EXEEXT to ".exe". +# Otherwise set it to "". + +dnl AM_EXEEXT() +dnl This knows we add .exe if we're building in the Cygwin32 +dnl environment. But if we're not, then it compiles a test program +dnl to see if there is a suffix for executables. +AC_DEFUN(AM_EXEEXT, +[AC_REQUIRE([AM_CYGWIN32]) +AC_MSG_CHECKING([for executable suffix]) +AC_CACHE_VAL(am_cv_exeext, +[if test "$CYGWIN32" = yes; then +am_cv_exeext=.exe +else +cat > am_c_test.c << 'EOF' +int main() { +/* Nothing needed here */ +} +EOF +${CC-cc} -o am_c_test $CFLAGS $CPPFLAGS $LDFLAGS am_c_test.c $LIBS 1>&5 +am_cv_exeext=`echo am_c_test.* | grep -v am_c_test.c | sed -e s/am_c_test//` +rm -f am_c_test*]) +test x"${am_cv_exeext}" = x && am_cv_exeext=no +fi +EXEEXT="" +test x"${am_cv_exeext}" != xno && EXEEXT=${am_cv_exeext} +AC_MSG_RESULT(${am_cv_exeext}) +AC_SUBST(EXEEXT)]) + +# Check to see if we're running under Cygwin32, without using +# AC_CANONICAL_*. If so, set output variable CYGWIN32 to "yes". +# Otherwise set it to "no". + +dnl AM_CYGWIN32() +AC_DEFUN(AM_CYGWIN32, +[AC_CACHE_CHECK(for Cygwin32 environment, am_cv_cygwin32, +[AC_TRY_COMPILE(,[int main () { return __CYGWIN32__; }], +am_cv_cygwin32=yes, am_cv_cygwin32=no) +rm -f conftest*]) +CYGWIN32= +test "$am_cv_cygwin32" = yes && CYGWIN32=yes]) + diff --git a/itcl/config/config.guess b/itcl/config/config.guess new file mode 100755 index 00000000000..62186fd1660 --- /dev/null +++ b/itcl/config/config.guess @@ -0,0 +1,483 @@ +#!/bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc. +# +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Written by Per Bothner . +# The master version of this file is at the FSF in /home/gd/gnu/lib. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit system type (host/target name). +# +# Only a few systems have been added to this list; please add others +# (but try to keep the structure clean). +# + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 8/24/94.) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +trap 'rm -f dummy.c dummy.o dummy; exit 1' 1 2 15 + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + alpha:OSF1:V*:*) + # After 1.2, OSF1 uses "V1.3" for uname -r. + echo alpha-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^V//'` + exit 0 ;; + alpha:OSF1:*:*) + # 1.2 uses "1.2" for uname -r. + echo alpha-dec-osf${UNAME_RELEASE} + exit 0 ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit 0;; + Pyramid*:OSx*:*:*) + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit 0 ;; + i86pc:SunOS:5.*:*) + echo i486-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:*:*) + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit 0 ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit 0 ;; + tp_s2*:SunOS:*:*) + # Tadpole Sparcbook 2 running a modified 4.1.3 + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit 0 ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + mips:*:5*:RISCos) + echo mips-mips-riscos${UNAME_RELEASE} + exit 0 ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit 0 ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit 0 ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit 0 ;; + AViiON:dgux:*:*) + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \ + -o ${TARGET_BINARY_INTERFACE}x = x ] ; then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + exit 0 ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit 0 ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit 0 ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit 0 ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit 0 ;; + *:IRIX:*:*) + echo mips-sgi-irix${UNAME_RELEASE} + exit 0 ;; + i[34]86:AIX:*:*) + echo i386-ibm-aix + exit 0 ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + sed 's/^ //' << EOF >dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy + echo rs6000-ibm-aix3.2.5 + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit 0 ;; + *:AIX:*:4) + if /usr/sbin/lsattr -EHl proc0 | grep POWER >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if grep bos410 /usr/include/stdio.h >/dev/null 2>&1; then + IBM_REV=4.1 + elif grep bos411 /usr/include/stdio.h >/dev/null 2>&1; then + IBM_REV=4.1.1 + else + IBM_REV=4.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit 0 ;; + *:BOSX:*:*) + echo rs6000-bull-bosx + exit 0 ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit 0 ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit 0 ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit 0 ;; + 9000/[3478]??:HP-UX:*:*) + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/7?? | 9000/8?7 ) HP_ARCH=hppa1.1 ;; + 9000/8?? ) HP_ARCH=hppa1.0 ;; + esac + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit 0 ;; + 3050*:HI-UX:*:*) + sed 's/^ //' << EOF >dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy + echo unknown-hitachi-hiuxwe2 + exit 0 ;; + 9000/7??:4.3bsd:*:* | 9000/8?7:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit 0 ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit 0 ;; + hp7??:OSF1:*:* | hp8?7:OSF1:*:* ) + echo hppa1.1-hp-osf + exit 0 ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit 0 ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit 0 ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit 0 ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit 0 ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit 0 ;; + CRAY*X-MP:UNICOS:*:*) + echo xmp-cray-unicos + exit 0 ;; + CRAY*Y-MP:UNICOS:*:*) + echo ymp-cray-unicos + exit 0 ;; + CRAY-2:UNICOS:*:*) + echo cray2-cray-unicos + exit 0 ;; + hp3[0-9][05]:NetBSD:*:*) + echo m68k-hp-netbsd${UNAME_RELEASE} + exit 0 ;; + i[34]86:BSD/386:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + i[34]86:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:FreeBSD:*:*) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit 0 ;; + *:NetBSD:*:*) + echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + exit 0 ;; + *:GNU:*:*) + echo `echo ${UNAME_MACHINE}|sed -e 's,/.*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit 0 ;; + *:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux + exit 0 ;; +# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions +# are messed up and put the nodename in both sysname and nodename. + i[34]86:DYNIX/ptx:4*:*) + echo i386-sequent-sysv4 + exit 0 ;; + i[34]86:*:4.*:* | i[34]86:SYSTEM_V:4.*:*) + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE} + else + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE} + fi + exit 0 ;; + i[34]86:*:3.2:*) + if /bin/uname -X 2>/dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')` + (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 + echo ${UNAME_MACHINE}-unknown-sco$UNAME_REL + elif test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit 0 ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit 0 ;; + M680[234]0:*:R3V[567]*:*) + test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; + 3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0) + uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4.3 && exit 0 ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4 && exit 0 ;; + m680[234]0:LynxOS:2.2*:*) + echo m68k-lynx-lynxos${UNAME_RELEASE} + exit 0 ;; + PowerPC:LynxOS:2.2*:*) + echo powerpc-lynx-lynxos${UNAME_RELEASE} + exit 0 ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit 0 ;; + i[34]86:LynxOS:2.2*:*) + echo i386-lynx-lynxos${UNAME_RELEASE} + exit 0 ;; + TSUNAMI:LynxOS:2.2*:*) + echo sparc-lynx-lynxos${UNAME_RELEASE} + exit 0 ;; + rs6000:LynxOS:2.2*:*) + echo rs6000-lynx-lynxos${UNAME_RELEASE} + exit 0 ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit 0 ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +cat >dummy.c </dev/null`; + printf ("%s-next-nextstep%s\n", __ARCHITECTURE__, version==2 ? "2" : "3"); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-unknown-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + printf ("i386-sequent-ptx\n"); exit (0); +#endif + +#if defined (vax) +#if !defined (ultrix) + printf ("vax-dec-bsd\n"); exit (0); +#else + printf ("vax-dec-ultrix\n"); exit (0); +#endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy && rm dummy.c dummy && exit 0 +rm -f dummy.c dummy + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit 0 ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + c34*) + echo c34-convex-bsd + exit 0 ;; + c38*) + echo c38-convex-bsd + exit 0 ;; + c4*) + echo c4-convex-bsd + exit 0 ;; + esac +fi + +#echo '(Unable to guess system type)' 1>&2 + +exit 1 diff --git a/itcl/config/config.sub b/itcl/config/config.sub new file mode 100755 index 00000000000..bf932cb9dd7 --- /dev/null +++ b/itcl/config/config.sub @@ -0,0 +1,793 @@ +#!/bin/sh +# Configuration validation subroutine script, version 1.1. +# Copyright (C) 1991, 1992, 1993, 1994 Free Software Foundation, Inc. +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +# First pass through any local machine types. +case $1 in + *local*) + echo $1 + exit 0 + ;; + *) + ;; +esac + +# Separate what the user gave into CPU-COMPANY and OS (if any). +basic_machine=`echo $1 | sed 's/-[^-]*$//'` +if [ $basic_machine != $1 ] +then os=`echo $1 | sed 's/.*-/-/'` +else os=; fi + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp ) + os= + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-unknown/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-unknown/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-unknown/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-unknown/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-unknown/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-unknown/'` + ;; + -lynx) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + tahoe | i[345]86 | i860 | m68k | m68000 | m88k | ns32k | arm | pyramid \ + | tron | a29k | 580 | i960 | h8300 | hppa1.0 | hppa1.1 \ + | alpha | we32k | ns16k | clipper | sparclite | i370 | sh \ + | powerpc | sparc64 | 1750a | dsp16xx | mips64 | mipsel \ + | pdp11 | mips64el | mips64orion | mips64orionel ) + basic_machine=$basic_machine-unknown + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + vax-* | tahoe-* | i[345]86-* | i860-* | m68k-* | m68000-* | m88k-* \ + | sparc-* | ns32k-* | fx80-* | arm-* | c[123]* \ + | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \ + | none-* | 580-* | cray2-* | h8300-* | i960-* | xmp-* | ymp-* \ + | hppa1.0-* | hppa1.1-* | alpha-* | we32k-* | cydra-* | ns16k-* \ + | pn-* | np1-* | xps100-* | clipper-* | orion-* | sparclite-* \ + | pdp11-* | sh-* | powerpc-* | sparc64-* | mips64-* | mipsel-* \ + | mips64el-* | mips64orion-* | mips64orionel-* ) + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-cbm + ;; + amigados) + basic_machine=m68k-cbm + os=-amigados + ;; + amigaunix | amix) + basic_machine=m68k-cbm + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | ymp) + basic_machine=ymp-cray + os=-unicos + ;; + cray2) + basic_machine=cray2-cray + os=-unicos + ;; + crds | unos) + basic_machine=m68k-crds + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k7[0-9][0-9] | hp7[0-9][0-9] | hp9k8[0-9]7 | hp8[0-9]7) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + os=-mvs + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i[345]86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-unknown/'` + os=-sysv32 + ;; + i[345]86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-unknown/'` + os=-sysv4 + ;; + i[345]86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-unknown/'` + os=-sysv + ;; + i[345]86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-unknown/'` + os=-solaris2 + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + miniframe) + basic_machine=m68000-convergent + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + np1) + basic_machine=np1-gould + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pentium-*) + # We will change tis to say i586 once there has been + # time for various packages to start to recognize that. + basic_machine=i486-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + ps2) + basic_machine=i386-ibm + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + xmp) + basic_machine=xmp-cray + os=-unicos + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + mips) + basic_machine=mips-mips + ;; + romp) + basic_machine=romp-ibm + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sparc) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # -solaris* is a basic system type, with this one exception. + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative must end in a *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[345]* \ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -amigados* | -msdos* | -newsos* | -unicos* | -aos* \ + | -nindy* | -vxworks* | -ebmon* | -hms* | -mvs* | -clix* \ + | -riscos* | -linux* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -netbsd* | -freebsd* | -riscix* \ + | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* \ + | -ptx* | -coff* | -winnt*) + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -ctix* | -uts*) + os=-sysv + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -xenix) + os=-xenix + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + *-acorn) + os=-riscix1.2 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-ibm) + os=-aix + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigados + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-masscomp) + os=-rtu + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -lynxos*) + vendor=lynx + ;; + -aix*) + vendor=ibm + ;; + -hpux*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os diff --git a/itcl/config/install-sh b/itcl/config/install-sh new file mode 100755 index 00000000000..0ff4b6a08e8 --- /dev/null +++ b/itcl/config/install-sh @@ -0,0 +1,119 @@ +#!/bin/sh + +# +# install - install a program, script, or datafile +# This comes from X11R5; it is not part of GNU. +# +# $XConsortium: install.sh,v 1.2 89/12/18 14:47:22 jim Exp $ +# +# This script is compatible with the BSD install script, but was written +# from scratch. +# + + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" + +instcmd="$mvprog" +chmodcmd="" +chowncmd="" +chgrpcmd="" +stripcmd="" +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src="" +dst="" + +while [ x"$1" != x ]; do + case $1 in + -c) instcmd="$cpprog" + shift + continue;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + -s) stripcmd="$stripprog" + shift + continue;; + + *) if [ x"$src" = x ] + then + src=$1 + else + dst=$1 + fi + shift + continue;; + esac +done + +if [ x"$src" = x ] +then + echo "install: no input file specified" + exit 1 +fi + +if [ x"$dst" = x ] +then + echo "install: no destination specified" + exit 1 +fi + + +# If destination is a directory, append the input filename; if your system +# does not like double slashes in filenames, you may need to add some logic + +if [ -d $dst ] +then + dst="$dst"/`basename $src` +fi + +# Make a temp file name in the proper directory. + +dstdir=`dirname $dst` +dsttmp=$dstdir/#inst.$$# + +# Move or copy the file name to the temp name + +$doit $instcmd $src $dsttmp + +# and set any options; do chmod last to preserve setuid bits + +if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; fi +if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; fi +if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; fi +if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; fi + +# Now rename the file to the real destination. + +$doit $rmcmd $dst +$doit $mvcmd $dsttmp $dst + + +exit 0 diff --git a/itcl/config/mkinstalldirs b/itcl/config/mkinstalldirs new file mode 100755 index 00000000000..0801ec2c966 --- /dev/null +++ b/itcl/config/mkinstalldirs @@ -0,0 +1,32 @@ +#! /bin/sh +# mkinstalldirs --- make directory hierarchy +# Author: Noah Friedman +# Created: 1993-05-16 +# Last modified: 1994-03-25 +# Public domain + +errstatus=0 + +for file in ${1+"$@"} ; do + set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` + shift + + pathcomp= + for d in ${1+"$@"} ; do + pathcomp="$pathcomp$d" + case "$pathcomp" in + -* ) pathcomp=./$pathcomp ;; + esac + + if test ! -d "$pathcomp"; then + echo "mkdir $pathcomp" 1>&2 + mkdir "$pathcomp" || errstatus=$? + fi + + pathcomp="$pathcomp/" + done +done + +exit $errstatus + +# mkinstalldirs ends here diff --git a/itcl/configure b/itcl/configure new file mode 100755 index 00000000000..4e46ba23472 --- /dev/null +++ b/itcl/configure @@ -0,0 +1,976 @@ +#! /bin/sh + +# Guess values for system-dependent variables and create Makefiles. +# Generated automatically using autoconf version 2.12.2 +# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. + +# Defaults: +ac_help= +ac_default_prefix=/usr/local +# Any additions from configure.in: + +# Initialize some variables set by options. +# The variables have the same names as the options, with +# dashes changed to underlines. +build=NONE +cache_file=./config.cache +exec_prefix=NONE +host=NONE +no_create= +nonopt=NONE +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +target=NONE +verbose= +x_includes=NONE +x_libraries=NONE +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +# Initialize some other variables. +subdirs= +MFLAGS= MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} +# Maximum number of lines to put in a shell here document. +ac_max_here_lines=12 + +ac_prev= +for ac_option +do + + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + case "$ac_option" in + -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) ac_optarg= ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case "$ac_option" in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir="$ac_optarg" ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build="$ac_optarg" ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file="$ac_optarg" ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir="$ac_optarg" ;; + + -disable-* | --disable-*) + ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then + { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } + fi + ac_feature=`echo $ac_feature| sed 's/-/_/g'` + eval "enable_${ac_feature}=no" ;; + + -enable-* | --enable-*) + ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then + { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } + fi + ac_feature=`echo $ac_feature| sed 's/-/_/g'` + case "$ac_option" in + *=*) ;; + *) ac_optarg=yes ;; + esac + eval "enable_${ac_feature}='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix="$ac_optarg" ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he) + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat << EOF +Usage: configure [options] [host] +Options: [defaults in brackets after descriptions] +Configuration: + --cache-file=FILE cache test results in FILE + --help print this message + --no-create do not create output files + --quiet, --silent do not print \`checking...' messages + --version print the version of autoconf that created configure +Directory and file names: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [same as prefix] + --bindir=DIR user executables in DIR [EPREFIX/bin] + --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] + --libexecdir=DIR program executables in DIR [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data in DIR + [PREFIX/share] + --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data in DIR + [PREFIX/com] + --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] + --libdir=DIR object code libraries in DIR [EPREFIX/lib] + --includedir=DIR C header files in DIR [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] + --infodir=DIR info documentation in DIR [PREFIX/info] + --mandir=DIR man documentation in DIR [PREFIX/man] + --srcdir=DIR find the sources in DIR [configure dir or ..] + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM + run sed PROGRAM on installed program names +EOF + cat << EOF +Host type: + --build=BUILD configure for building on BUILD [BUILD=HOST] + --host=HOST configure for HOST [guessed] + --target=TARGET configure for TARGET [TARGET=HOST] +Features and packages: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --x-includes=DIR X include files are in DIR + --x-libraries=DIR X library files are in DIR +EOF + if test -n "$ac_help"; then + echo "--enable and --with options recognized:$ac_help" + fi + exit 0 ;; + + -host | --host | --hos | --ho) + ac_prev=host ;; + -host=* | --host=* | --hos=* | --ho=*) + host="$ac_optarg" ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir="$ac_optarg" ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir="$ac_optarg" ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir="$ac_optarg" ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir="$ac_optarg" ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir="$ac_optarg" ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir="$ac_optarg" ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir="$ac_optarg" ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix="$ac_optarg" ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix="$ac_optarg" ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix="$ac_optarg" ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name="$ac_optarg" ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir="$ac_optarg" ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir="$ac_optarg" ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site="$ac_optarg" ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir="$ac_optarg" ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir="$ac_optarg" ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target="$ac_optarg" ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers) + echo "configure generated by autoconf version 2.12.2" + exit 0 ;; + + -with-* | --with-*) + ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then + { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } + fi + ac_package=`echo $ac_package| sed 's/-/_/g'` + case "$ac_option" in + *=*) ;; + *) ac_optarg=yes ;; + esac + eval "with_${ac_package}='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`echo $ac_option|sed -e 's/-*without-//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then + { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } + fi + ac_package=`echo $ac_package| sed 's/-/_/g'` + eval "with_${ac_package}=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes="$ac_optarg" ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries="$ac_optarg" ;; + + -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } + ;; + + *) + if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then + echo "configure: warning: $ac_option: invalid host type" 1>&2 + fi + if test "x$nonopt" != xNONE; then + { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } + fi + nonopt="$ac_option" + ;; + + esac +done + +if test -n "$ac_prev"; then + { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } +fi + +trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 + +# File descriptor usage: +# 0 standard input +# 1 file creation +# 2 errors and warnings +# 3 some systems may open it to /dev/tty +# 4 used on the Kubota Titan +# 6 checking for... messages and results +# 5 compiler messages saved in config.log +if test "$silent" = yes; then + exec 6>/dev/null +else + exec 6>&1 +fi +exec 5>./config.log + +echo "\ +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. +" 1>&5 + +# Strip out --no-create and --no-recursion so they do not pile up. +# Also quote any args containing shell metacharacters. +ac_configure_args= +for ac_arg +do + case "$ac_arg" in + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c) ;; + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) + ac_configure_args="$ac_configure_args '$ac_arg'" ;; + *) ac_configure_args="$ac_configure_args $ac_arg" ;; + esac +done + +# NLS nuisances. +# Only set these to C if already set. These must not be set unconditionally +# because not all systems understand e.g. LANG=C (notably SCO). +# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! +# Non-C LC_CTYPE values break the ctype check. +if test "${LANG+set}" = set; then LANG=C; export LANG; fi +if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi +if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi +if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo > confdefs.h + +# A filename unique to this package, relative to the directory that +# configure is in, which we can look for to find out if srcdir is correct. +ac_unique_file=itcl/generic/itcl.h + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_prog=$0 + ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` + test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } + else + { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } + fi +fi +srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` + +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + echo "loading site script $ac_site_file" + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + echo "loading cache $cache_file" + . $cache_file +else + echo "creating cache $cache_file" + > $cache_file +fi + +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + +ac_exeext= +ac_objext=o +if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then + # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. + if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then + ac_n= ac_c=' +' ac_t=' ' + else + ac_n=-n ac_c= ac_t= + fi +else + ac_n= ac_c='\c' ac_t= +fi + + +ac_aux_dir= +for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/install-sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f $ac_dir/install.sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; } +fi +ac_config_guess=$ac_aux_dir/config.guess +ac_config_sub=$ac_aux_dir/config.sub +ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. + + +# Make sure we can run config.sub. +if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then : +else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } +fi + +echo $ac_n "checking host system type""... $ac_c" 1>&6 +echo "configure:551: checking host system type" >&5 + +host_alias=$host +case "$host_alias" in +NONE) + case $nonopt in + NONE) + if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then : + else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; } + fi ;; + *) host_alias=$nonopt ;; + esac ;; +esac + +host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias` +host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` +echo "$ac_t""$host" 1>&6 + + +if test -d itcl; then + true +else + mkdir itcl +fi +if test -d itk; then + true +else + mkdir itk +fi +if test -d iwidgets3.0.0; then + true +else + mkdir iwidgets3.0.0 +fi + +case "${host}" in +*-*-cygwin*) + CONFIGDIR="itcl/win itk/win iwidgets3.0.0/unix" ;; +*) + CONFIGDIR="itcl/unix itk/unix iwidgets3.0.0/unix" ;; +esac + + +echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 +echo "configure:597: checking whether ${MAKE-make} sets \${MAKE}" >&5 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftestmake <<\EOF +all: + @echo 'ac_maketemp="${MAKE}"' +EOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftestmake +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$ac_t""yes" 1>&6 + SET_MAKE= +else + echo "$ac_t""no" 1>&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + + +subdirs="$CONFIGDIR" + + +trap '' 1 2 15 +cat > confcache <<\EOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs. It is not useful on other systems. +# If it contains results you don't want to keep, you may remove or edit it. +# +# By default, configure uses ./config.cache as the cache file, +# creating it if it does not exist already. You can give configure +# the --cache-file=FILE option to use a different cache file; that is +# what configure does when it calls configure scripts in +# subdirectories, so they share the cache. +# Giving --cache-file=/dev/null disables caching, for debugging configure. +# config.status only pays attention to the cache file if you give it the +# --recheck option to rerun configure. +# +EOF +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +(set) 2>&1 | + case `(ac_space=' '; set) 2>&1 | grep ac_space` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote substitution + # turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + -e "s/'/'\\\\''/g" \ + -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' + ;; + esac >> confcache +if cmp -s $cache_file confcache; then + : +else + if test -w $cache_file; then + echo "updating cache $cache_file" + cat confcache > $cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# Any assignment to VPATH causes Sun make to only execute +# the first set of double-colon rules, so remove it if not needed. +# If there is a colon in the path, we need to keep it. +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' +fi + +trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 + +# Transform confdefs.h into DEFS. +# Protect against shell expansion while executing Makefile rules. +# Protect against Makefile macro expansion. +cat > conftest.defs <<\EOF +s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g +s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g +s%\[%\\&%g +s%\]%\\&%g +s%\$%$$%g +EOF +DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '` +rm -f conftest.defs + + +# Without the "./", some shells look in PATH for config.status. +: ${CONFIG_STATUS=./config.status} + +echo creating $CONFIG_STATUS +rm -f $CONFIG_STATUS +cat > $CONFIG_STATUS </dev/null | sed 1q`: +# +# $0 $ac_configure_args +# +# Compiler output produced by configure, useful for debugging +# configure, is in ./config.log if it exists. + +ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" +for ac_option +do + case "\$ac_option" in + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" + exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; + -version | --version | --versio | --versi | --vers | --ver | --ve | --v) + echo "$CONFIG_STATUS generated by autoconf version 2.12.2" + exit 0 ;; + -help | --help | --hel | --he | --h) + echo "\$ac_cs_usage"; exit 0 ;; + *) echo "\$ac_cs_usage"; exit 1 ;; + esac +done + +ac_given_srcdir=$srcdir + +trap 'rm -fr `echo "Makefile" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 +EOF +cat >> $CONFIG_STATUS < conftest.subs <<\\CEOF +$ac_vpsub +$extrasub +s%@SHELL@%$SHELL%g +s%@CFLAGS@%$CFLAGS%g +s%@CPPFLAGS@%$CPPFLAGS%g +s%@CXXFLAGS@%$CXXFLAGS%g +s%@DEFS@%$DEFS%g +s%@LDFLAGS@%$LDFLAGS%g +s%@LIBS@%$LIBS%g +s%@exec_prefix@%$exec_prefix%g +s%@prefix@%$prefix%g +s%@program_transform_name@%$program_transform_name%g +s%@bindir@%$bindir%g +s%@sbindir@%$sbindir%g +s%@libexecdir@%$libexecdir%g +s%@datadir@%$datadir%g +s%@sysconfdir@%$sysconfdir%g +s%@sharedstatedir@%$sharedstatedir%g +s%@localstatedir@%$localstatedir%g +s%@libdir@%$libdir%g +s%@includedir@%$includedir%g +s%@oldincludedir@%$oldincludedir%g +s%@infodir@%$infodir%g +s%@mandir@%$mandir%g +s%@host@%$host%g +s%@host_alias@%$host_alias%g +s%@host_cpu@%$host_cpu%g +s%@host_vendor@%$host_vendor%g +s%@host_os@%$host_os%g +s%@CONFIGDIR@%$CONFIGDIR%g +s%@SET_MAKE@%$SET_MAKE%g +s%@subdirs@%$subdirs%g + +CEOF +EOF + +cat >> $CONFIG_STATUS <<\EOF + +# Split the substitutions into bite-sized pieces for seds with +# small command number limits, like on Digital OSF/1 and HP-UX. +ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. +ac_file=1 # Number of current file. +ac_beg=1 # First line for current file. +ac_end=$ac_max_sed_cmds # Line after last line for current file. +ac_more_lines=: +ac_sed_cmds="" +while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file + else + sed "${ac_end}q" conftest.subs > conftest.s$ac_file + fi + if test ! -s conftest.s$ac_file; then + ac_more_lines=false + rm -f conftest.s$ac_file + else + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f conftest.s$ac_file" + else + ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" + fi + ac_file=`expr $ac_file + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_cmds` + fi +done +if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat +fi +EOF + +cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF +for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case "$ac_file" in + *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` + ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + *) ac_file_in="${ac_file}.in" ;; + esac + + # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. + + # Remove last slash and all that follows it. Not all systems have dirname. + ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + # The file is in a subdirectory. + test ! -d "$ac_dir" && mkdir "$ac_dir" + ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" + # A "../" for each directory in $ac_dir_suffix. + ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` + else + ac_dir_suffix= ac_dots= + fi + + case "$ac_given_srcdir" in + .) srcdir=. + if test -z "$ac_dots"; then top_srcdir=. + else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; + /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; + *) # Relative path. + srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" + top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + + + echo creating "$ac_file" + rm -f "$ac_file" + configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." + case "$ac_file" in + *Makefile*) ac_comsub="1i\\ +# $configure_input" ;; + *) ac_comsub= ;; + esac + + ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` + sed -e "$ac_comsub +s%@configure_input@%$configure_input%g +s%@srcdir@%$srcdir%g +s%@top_srcdir@%$top_srcdir%g +" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file +fi; done +rm -f conftest.s* + +EOF +cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF + +exit 0 +EOF +chmod +x $CONFIG_STATUS +rm -fr confdefs* $ac_clean_files +test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 + +if test "$no_recursion" != yes; then + + # Remove --cache-file and --srcdir arguments so they do not pile up. + ac_sub_configure_args= + ac_prev= + for ac_arg in $ac_configure_args; do + if test -n "$ac_prev"; then + ac_prev= + continue + fi + case "$ac_arg" in + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + ;; + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + ;; + *) ac_sub_configure_args="$ac_sub_configure_args $ac_arg" ;; + esac + done + + for ac_config_dir in $CONFIGDIR; do + + # Do not complain, so a configure script can configure whichever + # parts of a large source tree are present. + if test ! -d $srcdir/$ac_config_dir; then + continue + fi + + echo configuring in $ac_config_dir + + case "$srcdir" in + .) ;; + *) + if test -d ./$ac_config_dir || mkdir ./$ac_config_dir; then :; + else + { echo "configure: error: can not create `pwd`/$ac_config_dir" 1>&2; exit 1; } + fi + ;; + esac + + ac_popdir=`pwd` + cd $ac_config_dir + + # A "../" for each directory in /$ac_config_dir. + ac_dots=`echo $ac_config_dir|sed -e 's%^\./%%' -e 's%[^/]$%&/%' -e 's%[^/]*/%../%g'` + + case "$srcdir" in + .) # No --srcdir option. We are building in place. + ac_sub_srcdir=$srcdir ;; + /*) # Absolute path. + ac_sub_srcdir=$srcdir/$ac_config_dir ;; + *) # Relative path. + ac_sub_srcdir=$ac_dots$srcdir/$ac_config_dir ;; + esac + + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_sub_srcdir/configure; then + ac_sub_configure=$ac_sub_srcdir/configure + elif test -f $ac_sub_srcdir/configure.in; then + ac_sub_configure=$ac_configure + else + echo "configure: warning: no configuration information is in $ac_config_dir" 1>&2 + ac_sub_configure= + fi + + # The recursion is here. + if test -n "$ac_sub_configure"; then + + # Make the cache file name correct relative to the subdirectory. + case "$cache_file" in + /*) ac_sub_cache_file=$cache_file ;; + *) # Relative path. + ac_sub_cache_file="$ac_dots$cache_file" ;; + esac + + echo "running ${CONFIG_SHELL-/bin/sh} $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_sub_srcdir" + # The eval makes quoting arguments work. + if eval ${CONFIG_SHELL-/bin/sh} $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_sub_srcdir + then : + else + { echo "configure: error: $ac_sub_configure failed for $ac_config_dir" 1>&2; exit 1; } + fi + fi + + cd $ac_popdir + done +fi + diff --git a/itcl/configure.in b/itcl/configure.in new file mode 100644 index 00000000000..41de7dc7591 --- /dev/null +++ b/itcl/configure.in @@ -0,0 +1,37 @@ +dnl This entire file is CYGNUS LOCAL. +dnl Itcl configure file. + +AC_PREREQ(2.5) + +AC_INIT(itcl/generic/itcl.h) +AC_CANONICAL_HOST + +if test -d itcl; then + true +else + mkdir itcl +fi +if test -d itk; then + true +else + mkdir itk +fi +if test -d iwidgets3.0.0; then + true +else + mkdir iwidgets3.0.0 +fi + +case "${host}" in +*-*-cygwin*) + CONFIGDIR="itcl/win itk/win iwidgets3.0.0/unix" ;; +*) + CONFIGDIR="itcl/unix itk/unix iwidgets3.0.0/unix" ;; +esac +AC_SUBST(CONFIGDIR) + +AC_PROG_MAKE_SET + +AC_CONFIG_SUBDIRS($CONFIGDIR) + +AC_OUTPUT(Makefile) diff --git a/itcl/doc/README b/itcl/doc/README new file mode 100644 index 00000000000..3474a6466e2 --- /dev/null +++ b/itcl/doc/README @@ -0,0 +1,14 @@ + + OVERVIEW +------------------------------------------------------------------------ + If you are just getting started with [incr Tcl], download the + "tutorial" from the itcl web site: + + http://www.tcltk.com/itcl/ + + This has over 100 pages of introductory text and code examples. + I didn't include it here, since it adds another megabyte to the + distribution, and long-time users won't need it. + + You can find the same tutorial in the book "Tcl/Tk Tools" + published by O'Reilly and Associates. diff --git a/itcl/itcl/doc/Resolvers.3 b/itcl/itcl/doc/Resolvers.3 new file mode 100644 index 00000000000..aa44f2cd648 --- /dev/null +++ b/itcl/itcl/doc/Resolvers.3 @@ -0,0 +1,222 @@ +'\" +'\" Copyright (c) 1998 Lucent Technologies, Inc. +'\" +'\" See the file "license.terms" for information on usage and redistribution +'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. +'\" +'\" SCCS: %W% +'\" +.so man.macros +.TH Tcl_AddInterpResolvers 3 8.0 Tcl "Tcl Library Procedures" +.BS +.SH NAME +Tcl_AddInterpResolvers, Tcl_GetInterpResolvers, Tcl_RemoveInterpResolvers, Tcl_SetNamespaceResolvers, Tcl_GetNamespaceResolvers \- change the name resolution rules for commands/variables +.SH SYNOPSIS +.nf +\fB#include \fR +.sp +void +\fBTcl_AddInterpResolvers\fR(\fIinterp, name, cmdProc, varProc, compiledVarProc\fR) +.sp +int +\fBTcl_GetInterpResolvers\fR(\fIinterp, name, resInfoPtr\fR) +.sp +int +\fBTcl_RemoveInterpResolvers\fR(\fIinterp, name\fR) +.sp +void +\fBTcl_SetNamespaceResolvers\fR(\fInamespacePtr, cmdProc, varProc, compiledVarProc\fR) +.sp +int +\fBTcl_GetNamespaceResolvers\fR(\fInamespacePtr, resInfoPtr\fR) +.SH ARGUMENTS +.AS Tcl_ResolveCompiledVarProc *compiledVarProc +.AP Tcl_Interp *interp in +Interpreter whose name resolution rules are being queried or modified. +.AP char *name in +Name for a group of name resolution procedures. +.AP Tcl_ResolveCmdProc *cmdProc in +Procedure which will be used to resolve command names. +.AP Tcl_ResolveVarProc *varProc in +Procedure which will be used to resolve variable names at run time. +.AP Tcl_ResolveCompiledVarProc *compiledVarProc in +Procedure which will be used to resolve variable names at compile time. +.AP Tcl_ResolverInfo *resInfoPtr out +Returns the resolution procedures that are currently in effect for +a particular namespace or for a particular name resolution scheme +in the interpreter. +.AP Tcl_Namespace *namespacePtr in +Namespace whose name resolution rules are being queried or modified. +.BE + +.SH DESCRIPTION +.PP +These procedures make it possible to change the way that Tcl +resolves command/variable names. The name resolution rules are +changed by supplying three procedures: \fIcmdProc\fR, \fIvarProc\fR, and +\fIcompiledVarProc\fR. See the section \fBHOW NAME RESOLUTION PROCEDURES +WORK\fR for details about these procedures. +.PP +The name resolution rules can be changed for a particular namespace, +for an entire interpreter, or both. When a name needs to be resolved, +Tcl handles it as follows. The name resolution scheme for the +current namespace is consulted first. Each of the name resolution +schemes for the interpreter are consulted next. Finally, Tcl uses +the default rules for name resolution as described for the +\fBnamespace\fR command. +.PP +\fBTcl_AddInterpResolver\fR adds a set of name resolution procedures +to an interpreter. The procedures are identified by a string \fIname\fR, +so they can be queried or deleted later on. All of the name resolution +schemes for the interpreter are kept on a list, and they are consulted +in order from most- to least-recently added. For example, suppose one +extension adds a name resolution scheme called "fred", and another +extension adds another scheme called "barney". When a name is resolved, +the "barney" scheme will be consulted first, followed by the "fred" +scheme, if necessary. +.PP +\fBTcl_GetInterpResolver\fR looks for a particular name resolution +scheme in an interpreter. If the \fIname\fR is recognized, this +procedure returns a non-zero value along with pointers to the +name resolution procedures in the \fIresInfoPtr\fR structure. Otherwise, +the procedure returns 0. +.PP +\fBTcl_RemoveInterpResolver\fR looks for a particular name resolution +scheme in an interpreter. If the \fIname\fR is recognized, this +procedure deletes the scheme and returns a non-zero value. Otherwise, +it returns 0. +.PP +\fBTcl_SetNamespaceResolver\fR sets the name resolution procedures +for a particular namespace. Unlike an interpreter, a namespace can +have only one name resolution scheme in effect at any given time. +.PP +\fBTcl_GetNamespaceResolver\fR returns the name resolution procedures +for a particular namespace. If the namespace has a special name +resolution scheme, this procedure returns a non-zero value along +with pointers to the name resolution procedures in the \fIresInfoPtr\fR +structure. Otherwise, the procedure returns 0. +.SH "HOW NAME RESOLUTION PROCEDURES WORK" +A name resolution scheme is enforced by three name resolution procedures. +The \fIcmdProc\fR procedure is used to resolve command names. It must +conform to the following type: +.CS +typedef int Tcl_ResolveCmdProc(Tcl_Interp* \fIinterp\fR, + char* \fIname\fR, Tcl_Namespace* \fIcontext\fR, int \fIflags\fR, + Tcl_Command* \fIrPtr\fR); +.CE +The \fIinterp\fR argument is the interpreter performing the resolution; +\fIname\fR is the command name being resolved; \fIcontext\fR is the +namespace context containing the command reference; and \fIflags\fR +may contain TCL_LEAVE_ERR_MSG. +.PP +If this procedure recognizes the command \fIname\fR, it should +store the Tcl_Command token for that command in the \fIrPtr\fR +argument and return TCL_OK. If this procedure doesn't recognize +the command \fIname\fR, it should return TCL_CONTINUE, and the +name resolution will continue with another procedure or with the +default Tcl resolution scheme. If this procedure recognizes +the command \fIname\fR, but for some reason the command is +invalid, the procedure should return TCL_ERROR. If the \fIflags\fR +argument contains TCL_LEAVE_ERR_MSG, the procedure should leave +an error message in the interpreter, explaining why the command +is invalid. +.PP +The \fIvarProc\fR procedure is similar to \fIcmdProc\fR, but it is +used to resolve variable names encountered at run time. It must +conform to the following type: +.CS +typedef int Tcl_ResolveVarProc(Tcl_Interp* \fIinterp\fR, + char* \fIname\fR, Tcl_Namespace* \fIcontext\fR, int \fIflags\fR, + Tcl_Var* \fIrPtr\fR); +.CE +The \fIinterp\fR argument is the interpreter performing the resolution; +\fIname\fR is the variable name being resolved; \fIcontext\fR is the +namespace context containing the variable reference; and \fIflags\fR +may contain TCL_GLOBAL_ONLY, TCL_NAMESPACE_ONLY, or TCL_LEAVE_ERR_MSG. +.PP +If this procedure recognizes the variable \fIname\fR, it should +store the Tcl_Var token for that variable in the \fIrPtr\fR +argument and return TCL_OK. If this procedure doesn't recognize +the variable \fIname\fR, it should return TCL_CONTINUE, and the +name resolution will continue with another procedure or with the +default Tcl resolution scheme. If this procedure recognizes +the variable \fIname\fR, but for some reason the variable is +not accessible, the procedure should return TCL_ERROR. If the +\fIflags\fR argument contains TCL_LEAVE_ERR_MSG, the procedure +should leave an error message in the interpreter, explaining why +the variable reference is invalid. +.PP +Note that this procedure should look for the TCL_GLOBAL_ONLY and +TCL_NAMESPACE_ONLY flags. It should handle them appropriately, or +return TCL_CONTINUE and let Tcl handle the reference. But it should +not ignore the flags. +.PP +Tcl also resolves variables when a body of code is compiled; the +\fIcompiledVarProc\fR procedure handles that case. It must +conform to the following type: +.CS +typedef int Tcl_ResolveCompiledVarProc(Tcl_Interp* \fIinterp\fR, + char* \fIname\fR, int \fIlength\fR, Tcl_Namespace* \fIcontext\fR, + Tcl_ResolvedVarInfo* \fIrPtr\fR); +.CE +The \fIinterp\fR argument is the interpreter performing the resolution; +\fIname\fR is the variable name being resolved; \fIlength\fR is the +number of bytes in \fIname\fR, which is not a null-terminated +string; and \fIcontext\fR is the namespace context containing the +variable reference. +.PP +If this procedure recognizes the variable \fIname\fR, it should +return some information characterizing the variable in the +\fIrPtr\fR structure. This structure is defined as follows: +.CS +typedef struct Tcl_ResolvedVarInfo { + ClientData \fIidentity\fR; + Tcl_ResolveRuntimeVarProc *\fIfetchProc\fR; + Tcl_ResolveVarDeleteProc *\fIdeleteProc\fR; +} Tcl_ResolvedVarInfo; +.CE +The \fIidentity\fR field is an arbitrary value that characterizes +the variable. Each variable should have a unique identity. Each +time the compiled code is executed, Tcl will call the \fIfetchProc\fR +procedure to get the actual variable for a particular \fIidentity\fR +value. This callback procedure must conform to the following type: +.CS +typedef Tcl_Var Tcl_ResolveRuntimeVarProc(Tcl_Interp* \fIinterp\fR, + ClientData \fIidentity\fR); +.CE +The \fIfetchProc\fR procedure takes the \fIinterp\fR interpreter +and the \fIidentity\fR from compile time and returns a Tcl_Var +token representing the variable. If for some reason the variable +can't be found, this procedure should return NULL, and Tcl will +create a local variable within the call frame of the procedure +being executed. +.PP +When the compiled code is discarded, Tcl calls the \fIdeleteProc\fR +procedure to release the \fIidentity\fR data. The delete procedure +must conform to the following type: +.CS +typedef void Tcl_ResolveVarDeleteProc(ClientData \fIidentity\fR); +.CE +.PP +In general, the \fIvarProc\fR and \fIcompiledVarProc\fR procedures +should \fIboth\fR be defined. If the \fIcompiledVarProc\fR is not +defined, then Tcl will create local variables for any variable +names that are not recognized within a procedure. If the \fIvarProc\fR +is not defined, then Tcl will not recognize variables that are +encountered at runtime. For example, consider the following procedure: +.CS +proc foo {args} { + set anotherRef "1" + set name "another" + set ${name}Ref "2" +} +.CE +Suppose that the \fIcompiledVarProc\fR resolves the name +\fBanotherRef\fR at compile time. The name \fB${name}Ref\fR +can't be resolved at compile time, so the resolution of that +name is deferred to run time. If the \fIvarProc\fR procedure +must intercept the name \fBanotherRef\fR at run time and +supply the appropriate variable. + +.SH KEYWORDS +interpreter, namespace, resolution diff --git a/itcl/itcl/doc/body.n b/itcl/itcl/doc/body.n new file mode 100644 index 00000000000..a01470140fe --- /dev/null +++ b/itcl/itcl/doc/body.n @@ -0,0 +1,124 @@ +'\" +'\" Copyright (c) 1993-1998 Lucent Technologies, Inc. +'\" +'\" See the file "license.terms" for information on usage and redistribution +'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. +'\" +'\" RCS: $Id$ +'\" +.so man.macros +.TH body n 3.0 itcl "[incr\ Tcl]" +.BS +'\" Note: do not modify the .SH NAME line immediately below! +.SH NAME +body \- change the body for a class method/proc +.SH SYNOPSIS +\fBbody \fIclassName\fB::\fIfunction args body\fR +.BE + +.SH DESCRIPTION +.PP +The \fBbody\fR command is used outside of an \fB[incr\ Tcl]\fR +class definition to define or redefine the body of a class +method or proc. This facility allows a class definition +to have separate "interface" and "implementation" parts. +The "interface" part is a \fBclass\fR command with declarations +for methods, procs, instance variables and common variables. +The "implementation" part is a series of \fBbody\fR and +\fBconfigbody\fR commands. If the "implementation" part +is kept in a separate file, it can be sourced again and +again as bugs are fixed, to support interactive development. +When using the "tcl" mode in the \fBemacs\fR editor, the +"interface" and "implementation" parts can be kept in the +same file; as bugs are fixed, individual bodies can be +highlighted and sent to the test application. +.PP +The name "\fIclassName\fB::\fIfunction\fR" +identifies the method/proc being changed. +.PP +If an \fIargs\fR list was specified when the \fIfunction\fR was +defined in the class definition, the \fIargs\fR list for the +\fBbody\fR command must match in meaning. Variable names +can change, but the argument lists must have the same required +arguments and the same default values for optional arguments. +The special \fBargs\fR argument acts as a wildcard when included +in the \fIargs\fR list in the class definition; it will match +zero or more arguments of any type when the body is redefined. +.PP +If the \fIbody\fR string starts with "\fB@\fR", it is treated +as the symbolic name for a C procedure. The \fIargs\fR list +has little meaning for the C procedure, except to document +the expected usage. (The C procedure is not guaranteed to +use arguments in this manner.) If \fIbody\fR does not start +with "\fB@\fR", it is treated as a Tcl command script. When +the function is invoked, command line arguments are matched +against the \fIargs\fR list, and local variables are created +to represent each argument. This is the usual behavior for +a Tcl-style proc. +.PP +Symbolic names for C procedures are established by registering +procedures via \fBItcl_RegisterC()\fR. This is usually done +in the \fBTcl_AppInit()\fR procedure, which is automatically called +when the interpreter starts up. In the following example, +the procedure \fCMy_FooCmd()\fR is registered with the +symbolic name "foo". This procedure can be referenced in +the \fBbody\fR command as "\fC@foo\fR". +.CS +int +Tcl_AppInit(interp) + Tcl_Interp *interp; /* Interpreter for application. */ +{ + if (Itcl_Init(interp) == TCL_ERROR) { + return TCL_ERROR; + } + + if (Itcl_RegisterC(interp, "foo", My_FooCmd) != TCL_OK) { + return TCL_ERROR; + } +} +.CE + +.SH EXAMPLE +In the following example, a "File" class is defined to represent +open files. The method bodies are included below the class +definition via the \fBbody\fR command. Note that the bodies +of the constructor/destructor must be included in the class +definition, but they can be redefined via the \fBbody\fR command +as well. +.CS +class File { + private variable fid "" + constructor {name access} { + set fid [open $name $access] + } + destructor { + close $fid + } + + method get {} + method put {line} + method eof {} +} + +body File::get {} { + return [gets $fid] +} +body File::put {line} { + puts $fid $line +} +body File::eof {} { + return [::eof $fid] +} + +# +# See the File class in action: +# +File x /etc/passwd "r" +while {![x eof]} { + puts "=> [x get]" +} +delete object x +.CE + +.SH KEYWORDS +class, object, procedure diff --git a/itcl/itcl/doc/class.n b/itcl/itcl/doc/class.n new file mode 100644 index 00000000000..16f84f8aaa7 --- /dev/null +++ b/itcl/itcl/doc/class.n @@ -0,0 +1,490 @@ +'\" +'\" Copyright (c) 1993-1998 Lucent Technologies, Inc. +'\" +'\" See the file "license.terms" for information on usage and redistribution +'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. +'\" +'\" RCS: $Id$ +'\" +.so man.macros +.TH class n "" itcl "[incr\ Tcl]" +.BS +'\" Note: do not modify the .SH NAME line immediately below! +.SH NAME +class \- create a class of objects +.SH SYNOPSIS +\fBclass \fIclassName\fR \fB{ +.br + \fBinherit \fIbaseClass\fR ?\fIbaseClass\fR...? +.br + \fBconstructor \fIargs\fR ?\fIinit\fR? \fIbody\fR +.br + \fBdestructor \fIbody\fR +.br + \fBmethod \fIname\fR ?\fIargs\fR? ?\fIbody\fR? +.br + \fBproc \fIname ?\fIargs\fR? ?\fIbody\fR? +.br + \fBvariable \fIvarName\fR ?\fIinit\fR? ?\fIconfig\fR? +.br + \fBcommon \fIvarName\fR ?\fIinit\fR? +.sp + \fBpublic \fIcommand\fR ?\fIarg arg ...\fR? +.br + \fBprotected \fIcommand\fR ?\fIarg arg ...\fR? +.br + \fBprivate \fIcommand\fR ?\fIarg arg ...\fR? +.sp + \fBset \fIvarName\fR ?\fIvalue\fR? +.br + \fBarray \fIoption\fR ?\fIarg arg ...\fR? +.br +\fB}\fR +.sp +\fIclassName objName\fR ?\fIarg arg ...\fR? +.sp +\fIobjName method\fR ?\fIarg arg ...\fR? +.sp +\fIclassName::proc ?\fIarg arg ...\fR? +.BE + +.SH DESCRIPTION +.PP +The fundamental construct in \fB[incr\ Tcl]\fR is the class definition. +Each class acts as a template for actual objects that can be created. +The class itself is a namespace which contains things common to all +objects. Each object has its own unique bundle of data which contains +instances of the "variables" defined in the class definition. Each +object also has a built-in variable named "this", which contains the +name of the object. Classes can also have "common" data members that +are shared by all objects in a class. +.PP +Two types of functions can be included in the class definition. +"Methods" are functions which operate on a specific object, and +therefore have access to both "variables" and "common" data members. +"Procs" are ordinary procedures in the class namespace, and only +have access to "common" data members. +.PP +If the body of any method or proc starts with "\fB@\fR", it is treated +as the symbolic name for a C procedure. Otherwise, it is treated as +a Tcl code script. See below for details on registering and using +C procedures. +.PP +A class can only be defined once, although the bodies of class +methods and procs can be defined again and again for interactive +debugging. See the \fBbody\fR and \fBconfigbody\fR commands for +details. +.PP +Each namespace can have its own collection of objects and classes. +The list of classes available in the current context can be queried +using the "\fBitcl::find classes\fR" command, and the list of objects, +with the "\fBitcl::find objects\fR" command. +.PP +A class can be deleted using the "\fBdelete class\fR" command. +Individual objects can be deleted using the "\fBdelete object\fR" +command. + +.SH CLASS DEFINITIONS +.TP +\fBclass \fIclassName definition\fR +Provides the definition for a class named \fIclassName\fR. If +the class \fIclassName\fR already exists, or if a command called +\fIclassName\fR exists in the current namespace context, this +command returns an error. If the class definition is successfully +parsed, \fIclassName\fR becomes a command in the current context, +handling the creation of objects for this class. +.PP +The class \fIdefinition\fR is evaluated as a series of Tcl +statements that define elements within the class. The following +class definition commands are recognized: +.RS +.TP +\fBinherit \fIbaseClass\fR ?\fIbaseClass\fR...? +Causes the current class to inherit characteristics from one or +more base classes. Classes must have been defined by a previous +\fBclass\fR command, or must be available to the auto-loading +facility (see "AUTO-LOADING" below). A single class definition +can contain no more than one \fBinherit\fR command. +.sp +The order of \fIbaseClass\fR names in the \fBinherit\fR list +affects the name resolution for class members. When the same +member name appears in two or more base classes, the base class +that appears first in the \fBinherit\fR list takes precedence. +For example, if classes "Foo" and "Bar" both contain the member +"x", and if another class has the "\fBinherit\fR" statement: +.CS +inherit Foo Bar +.CE +then the name "x" means "Foo::x". Other inherited members named +"x" must be referenced with their explicit name, like "Bar::x". +.TP +\fBconstructor \fIargs\fR ?\fIinit\fR? \fIbody\fR +Declares the \fIargs\fR argument list and \fIbody\fR used for +the constructor, which is automatically invoked whenever an +object is created. +.sp +Before the \fIbody\fR is executed, the +optional \fIinit\fR statement is used to invoke any base class +constructors that require arguments. Variables in the \fIargs\fR +specification can be accessed in the \fIinit\fR code fragment, +and passed to base class constructors. After evaluating the +\fIinit\fR statement, any base class constructors that have +not been executed are invoked automatically without arguments. +This ensures that all base classes are fully constructed before +the constructor \fIbody\fR is executed. By default, this +scheme causes constructors to be invoked in order from least- +to most-specific. This is exactly the opposite of the order +that classes are reported by the \fBinfo heritage\fR command. +.sp +If construction is successful, the constructor always returns +the object name\-regardless of how the \fIbody\fR is defined\-and +the object name becomes a command in the current namespace context. +If construction fails, an error message is returned. +.TP +\fBdestructor \fIbody\fR +Declares the \fIbody\fR used for the destructor, which is automatically +invoked when an object is deleted. If the destructor is successful, +the object data is destroyed and the object name is removed as a command +from the interpreter. If destruction fails, an error message is returned +and the object remains. +.sp +When an object is destroyed, all destructors in its class hierarchy +are invoked in order from most- to least-specific. This is the +order that the classes are reported by the "\fBinfo heritage\fR" +command, and it is exactly the opposite of the default constructor +order. +.TP +\fBmethod \fIname\fR ?\fIargs\fR? ?\fIbody\fR? +Declares a method called \fIname\fR. When the method \fIbody\fR is +executed, it will have automatic access to object-specific variables +and common data members. +.sp +If the \fIargs\fR list is specified, it establishes the usage +information for this method. The \fBbody\fR command can be used +to redefine the method body, but the \fIargs\fR list must match +this specification. +.sp +Within the body of another class method, a method can be invoked +like any other command\-simply by using its name. Outside of the +class context, the method name must be prefaced an object name, +which provides the context for the data that it manipulates. +Methods in a base class that are redefined in the current class, +or hidden by another base class, can be qualified using the +"\fIclassName\fR::\fImethod\fR" syntax. +.TP +\fBproc \fIname\fR ?\fIargs\fR? ?\fIbody\fR? +Declares a proc called \fIname\fR. A proc is an ordinary procedure +within the class namespace. Unlike a method, a proc is invoked +without referring to a specific object. When the proc \fIbody\fR is +executed, it will have automatic access only to common data members. +.sp +If the \fIargs\fR list is specified, it establishes the usage +information for this proc. The \fBbody\fR command can be used +to redefine the proc body, but the \fIargs\fR list must match +this specification. +.sp +Within the body of another class method or proc, a proc can be +invoked like any other command\-simply by using its name. +In any other namespace context, the proc is invoked using a +qualified name like "\fIclassName\fB::\fIproc\fR". Procs in +a base class that are redefined in the current class, or hidden +by another base class, can also be accessed via their qualified +name. +.TP +\fBvariable \fIvarName\fR ?\fIinit\fR? ?\fIconfig\fR? +Defines an object-specific variable named \fIvarName\fR. All +object-specific variables are automatically available in class +methods. They need not be declared with anything like the +\fBglobal\fR command. +.sp +If the optional \fIinit\fR string is specified, it is used as the +initial value of the variable when a new object is created. +Initialization forces the variable to be a simple scalar +value; uninitialized variables, on the other hand, can be set +within the constructor and used as arrays. +.sp +The optional \fIconfig\fR script is only allowed for public variables. +If specified, this code fragment is executed whenever a public +variable is modified by the built-in "configure" method. The +\fIconfig\fR script can also be specified outside of the class +definition using the \fBconfigbody\fR command. +.TP +\fBcommon \fIvarName\fR ?\fIinit\fR? +Declares a common variable named \fIvarName\fR. Common variables +reside in the class namespace and are shared by all objects belonging +to the class. They are just like global variables, except that +they need not be declared with the usual \fBglobal\fR command. +They are automatically visible in all class methods and procs. +.sp +If the optional \fIinit\fR string is specified, it is used as the +initial value of the variable. Initialization forces the variable +to be a simple scalar value; uninitialized variables, on the other +hand, can be set with subsequent \fBset\fR and \fBarray\fR commands +and used as arrays. +.sp +Once a common data member has been defined, it can be set using +\fBset\fR and \fBarray\fR commands within the class definition. +This allows common data members to be initialized as arrays. +For example: +.CS +class Foo { + common boolean + set boolean(true) 1 + set boolean(false) 0 +} +.CE +Note that if common data members are initialized within the +constructor, they get initialized again and again whenever new +objects are created. +.TP +\fBpublic \fIcommand\fR ?\fIarg arg ...\fR? +.TP +\fBprotected \fIcommand\fR ?\fIarg arg ...\fR? +.TP +\fBprivate \fIcommand\fR ?\fIarg arg ...\fR? +These commands are used to set the protection level for class +members that are created when \fIcommand\fR is evaluated. +The \fIcommand\fR is usually \fBmethod\fR, \fBproc\fR, +\fBvariable\fR or\fBcommon\fR, and the remaining \fIarg\fR's +complete the member definition. However, \fIcommand\fR can +also be a script containing many different member definitions, +and the protection level will apply to all of the members +that are created. + +.SH CLASS USAGE +.PP +Once a class has been defined, the class name can be used as a +command to create new objects belonging to the class. +.TP +\fIclassName objName\fR ?\fIargs...\fR? +Creates a new object in class \fIclassName\fR with the name \fIobjName\fR. +Remaining arguments are passed to the constructor of the most-specific +class. This in turn passes arguments to base class constructors before +invoking its own body of commands. If construction is successful, a +command called \fIobjName\fR is created in the current namespace context, +and \fIobjName\fR is returned as the result of this operation. +If an error is encountered during construction, the destructors are +automatically invoked to free any resources that have been allocated, +the object is deleted, and an error is returned. +.sp +If \fIobjName\fR contains the string "\fB#auto\fR", that string is +replaced with an automatically generated name. Names have the +form \fIclassName\fR, where the \fIclassName\fR part is +modified to start with a lowercase letter. In class "Toaster", +for example, the "\fB#auto\fR" specification would produce names +like toaster0, toaster1, etc. Note that "\fB#auto\fR" can be +also be buried within an object name: +.CS +fileselectiondialog .foo.bar.#auto -background red +.CE +This would generate an object named ".foo.bar.fileselectiondialog0". + +.SH OBJECT USAGE +Once an object has been created, the object name can be used +as a command to invoke methods that operate on the object. +.TP +\fIobjName method\fR ?\fIargs...\fR? +Invokes a method named \fImethod\fR on an object named \fIobjName\fR. +Remaining arguments are passed to the argument list for the +method. The method name can be "constructor", "destructor", +any method name appearing in the class definition, or any of +the following built-in methods. +.SH BUILT-IN METHODS +.TP +\fIobjName\fR \fBcget option\fR +Provides access to public variables as configuration options. This +mimics the behavior of the usual "cget" operation for Tk widgets. +The \fIoption\fR argument is a string of the form "\fB-\fIvarName\fR", +and this method returns the current value of the public variable +\fIvarName\fR. +.TP +\fIobjName\fR \fBconfigure\fR ?\fIoption\fR? ?\fIvalue option value ...\fR? +Provides access to public variables as configuration options. This +mimics the behavior of the usual "configure" operation for Tk widgets. +With no arguments, this method returns a list of lists describing +all of the public variables. Each list has three elements: the +variable name, its initial value and its current value. +.sp +If a single \fIoption\fR of the form "\fB-\fIvarName\fR" is specified, +then this method returns the information for that one variable. +.sp +Otherwise, the arguments are treated as \fIoption\fR/\fIvalue\fR +pairs assigning new values to public variables. Each variable +is assigned its new value, and if it has any "config" code associated +with it, it is executed in the context of the class where it was +defined. If the "config" code generates an error, the variable +is set back to its previous value, and the \fBconfigure\fR method +returns an error. +.TP +\fIobjName\fR \fBisa \fIclassName\fR +Returns non-zero if the given \fIclassName\fR can be found in the +object's heritage, and zero otherwise. +.TP +\fIobjName\fR \fBinfo \fIoption\fR ?\fIargs...\fR? +Returns information related to a particular object named +\fIobjName\fR, or to its class definition. The \fIoption\fR +parameter includes the following things, as well as the options +recognized by the usual Tcl "info" command: +.RS +.TP +\fIobjName\fR \fBinfo class\fR +Returns the name of the most-specific class for object \fIobjName\fR. +.TP +\fIobjName\fR \fBinfo inherit\fR +Returns the list of base classes as they were defined in the +"\fBinherit\fR" command, or an empty string if this class +has no base classes. +.TP +\fIobjName\fR \fBinfo heritage\fR +Returns the current class name and the entire list of base classes +in the order that they are traversed for member lookup and object +destruction. +.TP +\fIobjName\fR \fBinfo function\fR ?\fIcmdName\fR? ?\fB-protection\fR? ?\fB-type\fR? ?\fB-name\fR? ?\fB-args\fR? ?\fB-body\fR? +With no arguments, this command returns a list of all class methods +and procs. If \fIcmdName\fR is specified, it returns information +for a specific method or proc. If no flags are specified, this +command returns a list with the following elements: the protection +level, the type (method/proc), the qualified name, the argument list +and the body. Flags can be used to request specific elements from +this list. +.TP +\fIobjName\fR \fBinfo variable\fR ?\fIvarName\fR? ?\fB-protection\fR? ?\fB-type\fR? ?\fB-name\fR? ?\fB-init\fR? ?\fB-value\fR? ?\fB-config\fR? +With no arguments, this command returns a list of all object-specific +variables and common data members. If \fIvarName\fR is specified, it +returns information for a specific data member. If no flags are +specified, this command returns a list with the following elements: the +protection level, the type (variable/common), the qualified name, the +initial value, and the current value. If \fIvarName\fR is a public +variable, the "config" code is included on this list. Flags can be +used to request specific elements from this list. + +.SH CHAINING METHODS/PROCS +Sometimes a base class has a method or proc that is redefined with +the same name in a derived class. This is a way of making the +derived class handle the same operations as the base class, but +with its own specialized behavior. For example, suppose we have +a Toaster class that looks like this: +.CS +class Toaster { + variable crumbs 0 + method toast {nslices} { + if {$crumbs > 50} { + error "== FIRE! FIRE! ==" + } + set crumbs [expr $crumbs+4*$nslices] + } + method clean {} { + set crumbs 0 + } +} +.CE +We might create another class like SmartToaster that redefines +the "toast" method. If we want to access the base class method, +we can qualify it with the base class name, to avoid ambiguity: +.CS +class SmartToaster { + inherit Toaster + method toast {nslices} { + if {$crumbs > 40} { + clean + } + return [Toaster::toast $nslices] + } +} +.CE +Instead of hard-coding the base class name, we can use the +"chain" command like this: +.CS +class SmartToaster { + inherit Toaster + method toast {nslices} { + if {$crumbs > 40} { + clean + } + return [chain $nslices] + } +} +.CE +The chain command searches through the class hierarchy for +a slightly more generic (base class) implementation of a method +or proc, and invokes it with the specified arguments. It starts +at the current class context and searches through base classes +in the order that they are reported by the "info heritage" command. +If another implementation is not found, this command does nothing +and returns the null string. + +.SH AUTO-LOADING +.PP +Class definitions need not be loaded explicitly; they can be loaded as +needed by the usual Tcl auto-loading facility. Each directory containing +class definition files should have an accompanying "tclIndex" file. +Each line in this file identifies a Tcl procedure or \fB[incr\ Tcl]\fR +class definition and the file where the definition can be found. +.PP +For example, suppose a directory contains the definitions for classes +"Toaster" and "SmartToaster". Then the "tclIndex" file for this +directory would look like: +.CS +# Tcl autoload index file, version 2.0 for [incr Tcl] +# This file is generated by the "auto_mkindex" command +# and sourced to set up indexing information for one or +# more commands. Typically each line is a command that +# sets an element in the auto_index array, where the +# element name is the name of a command and the value is +# a script that loads the command. + +set auto_index(::Toaster) "source $dir/Toaster.itcl" +set auto_index(::SmartToaster) "source $dir/SmartToaster.itcl" +.PP +The \fBauto_mkindex\fR command is used to automatically +generate "tclIndex" files. +.CE +The auto-loader must be made aware of this directory by appending +the directory name to the "auto_path" variable. When this is in +place, classes will be auto-loaded as needed when used in an +application. + +.SH C PROCEDURES +.PP +C procedures can be integrated into an \fB[incr\ Tcl]\fR class +definition to implement methods, procs, and the "config" code +for public variables. Any body that starts with "\fB@\fR" +is treated as the symbolic name for a C procedure. +.PP +Symbolic names are established by registering procedures via +\fBItcl_RegisterC()\fR. This is usually done in the \fBTcl_AppInit()\fR +procedure, which is automatically called when the interpreter starts up. +In the following example, the procedure \fCMy_FooCmd()\fR is registered +with the symbolic name "foo". This procedure can be referenced in +the \fBbody\fR command as "\fC@foo\fR". +.CS +int +Tcl_AppInit(interp) + Tcl_Interp *interp; /* Interpreter for application. */ +{ + if (Itcl_Init(interp) == TCL_ERROR) { + return TCL_ERROR; + } + + if (Itcl_RegisterC(interp, "foo", My_FooCmd) != TCL_OK) { + return TCL_ERROR; + } +} +.CE +C procedures are implemented just like ordinary Tcl commands. +See the \fBCrtCommand\fR man page for details. Within the procedure, +class data members can be accessed like ordinary variables +using \fBTcl_SetVar()\fR, \fBTcl_GetVar()\fR, \fBTcl_TraceVar()\fR, +etc. Class methods and procs can be executed like ordinary commands +using \fBTcl_Eval()\fR. \fB[incr\ Tcl]\fR makes this possible by +automatically setting up the context before executing the C procedure. +.PP +This scheme provides a natural migration path for code development. +Classes can be developed quickly using Tcl code to implement the +bodies. An entire application can be built and tested. When +necessary, individual bodies can be implemented with C code to +improve performance. + +.SH KEYWORDS +class, object, object-oriented diff --git a/itcl/itcl/doc/code.n b/itcl/itcl/doc/code.n new file mode 100644 index 00000000000..294ba7a41cd --- /dev/null +++ b/itcl/itcl/doc/code.n @@ -0,0 +1,96 @@ +'\" +'\" Copyright (c) 1993-1998 Lucent Technologies, Inc. +'\" +'\" See the file "license.terms" for information on usage and redistribution +'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. +'\" +'\" RCS: $Id$ +'\" +.so man.macros +.TH code n 3.0 itcl "[incr\ Tcl]" +.BS +'\" Note: do not modify the .SH NAME line immediately below! +.SH NAME +code \- capture the namespace context for a code fragment +.SH SYNOPSIS +\fBcode \fR?\fB-namespace \fIname\fR? \fIcommand \fR?\fIarg arg ...\fR? +.BE + +.SH DESCRIPTION +.PP +Creates a scoped value for the specified \fIcommand\fR and its +associated \fIarg\fR arguments. A scoped value is a list with three +elements: the "\fC@scope\fR" keyword, a namespace context, +and a value string. For example, the command +.CS +namespace foo { + code puts "Hello World!" +} +.CE +produces the scoped value: +.CS +@scope ::foo {puts {Hello World!}} +.CE +Note that the \fBcode\fR command captures the current namespace +context. If the \fB-namespace\fR flag is specified, then the +current context is ignored, and the \fIname\fR string is used +as the namespace context. +.PP +Extensions like Tk execute ordinary code fragments in the global +namespace. A scoped value captures a code fragment together with +its namespace context in a way that allows it to be executed +properly later. It is needed, for example, to wrap up code fragments +when a Tk widget is used within a namespace: +.CS +namespace foo { + private proc report {mesg} { + puts "click: $mesg" + } + + button .b1 -text "Push Me" \ + -command [code report "Hello World!"] + pack .b1 +} +.CE +The code fragment associated with button \fC.b1\fR only makes +sense in the context of namespace "foo". Furthermore, the +"report" procedure is private, and can only be accessed within +that namespace. The \fBcode\fR command wraps up the code +fragment in a way that allows it to be executed properly +when the button is pressed. +.PP +Also, note that the \fBcode\fR command preserves the integrity +of arguments on the command line. This makes it a natural replacement +for the \fBlist\fR command, which is often used to format Tcl code +fragments. In other words, instead of using the \fBlist\fR command +like this: +.CS +after 1000 [list puts "Hello $name!"] +.CE +use the \fBcode\fR command like this: +.CS +after 1000 [code puts "Hello $name!"] +.CE +This not only formats the command correctly, but also captures +its namespace context. +.PP +Scoped commands can be invoked like ordinary code fragments, with +or without the \fBeval\fR command. For example, the following +statements work properly: +.CS +set cmd {@scope ::foo .b1} +$cmd configure -background red + +set opts {-bg blue -fg white} +eval $cmd configure $opts +.CE +Note that scoped commands by-pass the usual protection mechanisms; +the command: +.CS +@scope ::foo {report {Hello World!}} +.CE +can be used to access the "foo::report" proc from any namespace +context, even though it is private. + +.SH KEYWORDS +scope, callback, namespace, public, protected, private diff --git a/itcl/itcl/doc/configbody.n b/itcl/itcl/doc/configbody.n new file mode 100644 index 00000000000..51760cf686d --- /dev/null +++ b/itcl/itcl/doc/configbody.n @@ -0,0 +1,129 @@ +'\" +'\" Copyright (c) 1993-1998 Lucent Technologies, Inc. +'\" +'\" See the file "license.terms" for information on usage and redistribution +'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. +'\" +'\" RCS: $Id$ +'\" +.so man.macros +.TH configbody n 3.0 itcl "[incr\ Tcl]" +.BS +'\" Note: do not modify the .SH NAME line immediately below! +.SH NAME +configbody \- change the "config" code for a public variable +.SH SYNOPSIS +\fBconfigbody \fIclassName\fB::\fIvarName body\fR +.BE + +.SH DESCRIPTION +.PP +The \fBconfigbody\fR command is used outside of an \fB[incr\ Tcl]\fR +class definition to define or redefine the configuration code +associated with a public variable. Public variables act like +configuration options for an object. They can be modified +outside the class scope using the built-in \fBconfigure\fR method. +Each variable can have a bit of "config" code associate with it +that is automatically executed when the variable is configured. +The \fBconfigbody\fR command can be used to define or redefine +this body of code. +.PP +Like the \fBbody\fR command, this facility allows a class definition +to have separate "interface" and "implementation" parts. +The "interface" part is a \fBclass\fR command with declarations +for methods, procs, instance variables and common variables. +The "implementation" part is a series of \fBbody\fR and +\fBconfigbody\fR commands. If the "implementation" part +is kept in a separate file, it can be sourced again and +again as bugs are fixed, to support interactive development. +When using the "tcl" mode in the \fBemacs\fR editor, the +"interface" and "implementation" parts can be kept in the +same file; as bugs are fixed, individual bodies can be +highlighted and sent to the test application. +.PP +The name "\fIclassName\fB::\fIvarName\fR" +identifies the public variable being updated. +If the \fIbody\fR string starts with "\fB@\fR", it is treated +as the symbolic name for a C procedure. Otherwise, it is +treated as a Tcl command script. +.PP +Symbolic names for C procedures are established by registering +procedures via \fBItcl_RegisterC()\fR. This is usually done +in the \fBTcl_AppInit()\fR procedure, which is automatically called +when the interpreter starts up. In the following example, +the procedure \fCMy_FooCmd()\fR is registered with the +symbolic name "foo". This procedure can be referenced in +the \fBconfigbody\fR command as "\fC@foo\fR". +.CS +int +Tcl_AppInit(interp) + Tcl_Interp *interp; /* Interpreter for application. */ +{ + if (Itcl_Init(interp) == TCL_ERROR) { + return TCL_ERROR; + } + + if (Itcl_RegisterC(interp, "foo", My_FooCmd) != TCL_OK) { + return TCL_ERROR; + } +} +.CE + +.SH EXAMPLE +In the following example, a "File" class is defined to represent +open files. Whenever the "-name" option is configured, the +existing file is closed, and a new file is opened. Note that +the "config" code for a public variable is optional. The "-access" +option, for example, does not have it. +.CS +class File { + private variable fid "" + + public variable name "" + public variable access "r" + + constructor {args} { + eval configure $args + } + destructor { + if {$fid != ""} { + close $fid + } + } + + method get {} + method put {line} + method eof {} +} + +body File::get {} { + return [gets $fid] +} +body File::put {line} { + puts $fid $line +} +body File::eof {} { + return [::eof $fid] +} + +configbody File::name { + if {$fid != ""} { + close $fid + } + set fid [open $name $access] +} + +# +# See the File class in action: +# +File x + +x configure -name /etc/passwd +while {![x eof]} { + puts "=> [x get]" +} +delete object x +.CE + +.SH KEYWORDS +class, object, variable, configure diff --git a/itcl/itcl/doc/delete.n b/itcl/itcl/doc/delete.n new file mode 100644 index 00000000000..709b2e13ab3 --- /dev/null +++ b/itcl/itcl/doc/delete.n @@ -0,0 +1,64 @@ +'\" +'\" Copyright (c) 1993-1998 Lucent Technologies, Inc. +'\" +'\" See the file "license.terms" for information on usage and redistribution +'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. +'\" +'\" RCS: $Id$ +'\" +.so man.macros +.TH delete n 3.0 itcl "[incr\ Tcl]" +.BS +'\" Note: do not modify the .SH NAME line immediately below! +.SH NAME +delete \- delete things in the interpreter +.SH SYNOPSIS +\fBdelete \fIoption\fR ?\fIarg arg ...\fR? +.BE + +.SH DESCRIPTION +.PP +The \fBdelete\fR command is used to delete things in the interpreter. +It is implemented as an ensemble, so extensions can add their own +options and extend the behavior of this command. By default, the +\fBdelete\fR command handles the destruction of namespaces. +.PP +The \fIoption\fR argument determines what action is carried out +by the command. The legal \fIoptions\fR (which may be abbreviated) +are: +.TP +\fBdelete class \fIname\fR ?\fIname...\fR? +Deletes one or more \fB[incr\ Tcl]\fR classes called \fIname\fR. +This deletes all objects in the class, and all derived classes +as well. +.sp +If an error is encountered while destructing an object, it will +prevent the destruction of the class and any remaining objects. +To destroy the entire class without regard for errors, use the +"\fBdelete namespace\fR" command. +.TP +\fBdelete object \fIname\fR ?\fIname...\fR? +Deletes one or more \fB[incr\ Tcl]\fR objects called \fIname\fR. +An object is deleted by invoking all destructors in its class +hierarchy, in order from most- to least-specific. If all destructors +are successful, data associated with the object is deleted and +the \fIname\fR is removed as a command from the interpreter. +.sp +If the access command for an object resides in another namespace, +then its qualified name can be used: +.CS +delete object foo::bar::x +.CE +If an error is encountered while destructing an object, the +\fBdelete\fR command is aborted and the object remains alive. +To destroy an object without regard for errors, use the +"\fBrename\fR" command to destroy the object access command. +.TP +\fBdelete namespace \fIname\fR ?\fIname...\fR? +Deletes one or more namespaces called \fIname\fR. This deletes +all commands and variables in the namespace, and deletes all +child namespaces as well. When a namespace is deleted, it is +automatically removed from the import lists of all other namespaces. + +.SH KEYWORDS +namespace, proc, variable, ensemble diff --git a/itcl/itcl/doc/ensemble.n b/itcl/itcl/doc/ensemble.n new file mode 100644 index 00000000000..58e9adacf11 --- /dev/null +++ b/itcl/itcl/doc/ensemble.n @@ -0,0 +1,173 @@ +'\" +'\" Copyright (c) 1993-1998 Lucent Technologies, Inc. +'\" +'\" See the file "license.terms" for information on usage and redistribution +'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. +'\" +'\" RCS: $Id$ +'\" +.so man.macros +.TH ensemble n 3.0 itcl "[incr\ Tcl]" +.BS +'\" Note: do not modify the .SH NAME line immediately below! +.SH NAME +ensemble \- create or modify a composite command +.SH SYNOPSIS +\fBensemble \fIensName\fR ?\fIcommand arg arg...\fR? +.br +or +.br +\fBensemble \fIensName\fR { +.br + \fBpart \fIpartName args body\fR +.br + \fI...\fR +.br + \fBensemble \fIpartName\fR { +.br + \fBpart \fIsubPartName args body\fR +.br + \fBpart \fIsubPartName args body\fR +.br + \fI...\fR + } +.br +} +.BE + +.SH DESCRIPTION +.PP +The \fBensemble\fR command is used to create or modify a composite +command. See the section \fBWHAT IS AN ENSEMBLE?\fR below for a +brief overview of ensembles. +.PP +If the \fBensemble\fR command finds an existing ensemble called +\fIensName\fR, it updates that ensemble. Otherwise, it creates an +ensemble called \fIensName\fR. If the \fIensName\fR is a simple name +like "foo", then an ensemble command named "foo" is added to the +current namespace context. If a command named "foo" already exists +in that context, then it is deleted. If the \fIensName\fR contains +namespace qualifiers like "a::b::foo", then the namespace path is +resolved, and the ensemble command is added that namespace context. +Parent namespaces like "a" and "b" are created automatically, as needed. +.PP +If the \fIensName\fR contains spaces like "a::b::foo bar baz", then +additional words like "bar" and "baz" are treated as sub-ensembles. +Sub-ensembles are merely parts within an ensemble; they do not have +a Tcl command associated with them. An ensemble like "foo" can +have a sub-ensemble called "foo bar", which in turn can have a +sub-ensemble called "foo bar baz". In this case, the sub-ensemble +"foo bar" must be created before the sub-ensemble "foo bar baz" +that resides within it. +.PP +If there are any arguments following \fIensName\fR, then they are +treated as commands, and they are executed to update the ensemble. +The following commands are recognized in this context: \fBpart\fR +and \fBensemble\fR. +.PP +The \fBpart\fR command defines a new part for the ensemble. +Its syntax is identical to the usual \fBproc\fR command, but +it defines a part within an ensemble, instead of a Tcl command. +If a part called \fIpartName\fR already exists within the ensemble, +then the \fBpart\fR command returns an error. +.PP +The \fBensemble\fR command can be nested inside another \fBensemble\fR +command to define a sub-ensemble. + +.SH "WHAT IS AN ENSEMBLE?" +The usual "info" command is a composite command--the command name +\fBinfo\fR must be followed by a sub-command like \fBbody\fR or \fBglobals\fR. +We will refer to a command like \fBinfo\fR as an \fIensemble\fR, and to +sub-commands like \fBbody\fR or \fBglobals\fR as its \fIparts\fR. +.PP +Ensembles can be nested. For example, the \fBinfo\fR command has +an ensemble \fBinfo namespace\fR within it. This ensemble has parts +like \fBinfo namespace all\fR and \fBinfo namespace children\fR. +.PP +With ensembles, composite commands can be created and extended +in an automatic way. Any package can find an existing ensemble +and add new parts to it. So extension writers can add their +own parts, for example, to the \fBinfo\fR command. +.PP +The ensemble facility manages all of the part names and keeps +track of unique abbreviations. Normally, you can abbreviate +\fBinfo complete\fR to \fBinfo comp\fR. But if an extension adds the +part \fBinfo complexity\fR, the minimum abbreviation for \fBinfo complete\fR +becomes \fBinfo complet\fR. +.PP +The ensemble facility not only automates the construction of +composite commands, but it automates the error handling as well. +If you invoke an ensemble command without specifying a part name, +you get an automatically generated error message that summarizes +the usage information. For example, when the \fBinfo\fR command +is invoked without any arguments, it produces the following error +message: +.CS +wrong # args: should be one of... + info args procname + info body procname + info cmdcount + info commands ?pattern? + info complete command + info context + info default procname arg varname + info exists varName + info globals ?pattern? + info level ?number? + info library + info locals ?pattern? + info namespace option ?arg arg ...? + info patchlevel + info procs ?pattern? + info protection ?-command? ?-variable? name + info script + info tclversion + info vars ?pattern? + info which ?-command? ?-variable? ?-namespace? name\fR +.CE +You can also customize the way an ensemble responds to errors. +When an ensemble encounters an unspecified or ambiguous part +name, it looks for a part called \fB@error\fR. If it exists, +then it is used to handle the error. This part will receive all +of the arguments on the command line starting with the offending +part name. It can find another way of resolving the command, +or generate its own error message. + +.SH EXAMPLE +We could use an ensemble to clean up the syntax of the various +"wait" commands in Tcl/Tk. Instead of using a series of +strange commands like this: +.CS +vwait x +tkwait visibility .top +tkwait window . +.CE +we could use commands with a uniform syntax, like this: +.CS +wait variable x +wait visibility .top +wait window . +.CE +The Tcl package could define the following ensemble: +.CS +ensemble wait part variable {name} { + uplevel vwait $name +} +.CE +The Tk package could add some options to this ensemble, with a +command like this: +.CS +ensemble wait { + part visibility {name} { + tkwait visibility $name + } + part window {name} { + tkwait window $name + } +} +.CE +Other extensions could add their own parts to the \fBwait\fR command +too. + +.SH KEYWORDS +ensemble, part, info diff --git a/itcl/itcl/doc/find.n b/itcl/itcl/doc/find.n new file mode 100644 index 00000000000..154cfbbf50c --- /dev/null +++ b/itcl/itcl/doc/find.n @@ -0,0 +1,62 @@ +'\" +'\" Copyright (c) 1993-1998 Lucent Technologies, Inc. +'\" +'\" See the file "license.terms" for information on usage and redistribution +'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. +'\" +'\" RCS: $Id$ +'\" +.so man.macros +.TH find n 3.0 itcl "[incr\ Tcl]" +.BS +'\" Note: do not modify the .SH NAME line immediately below! +.SH NAME +find \- search for classes and objects +.SH SYNOPSIS +\fBfind \fIoption\fR ?\fIarg arg ...\fR? +.BE + +.SH DESCRIPTION +.PP +The \fBfind\fR command is used to find classes and objects +that are available in the current context. A class or object is +"available" if its access command can be found in the current +namespace context or in the global namespace. Therefore, +classes and objects created in the global namespace are +available to all other namespaces in a program. Classes and +objects created in one namespace can also be imported into +another using the \fBnamespace import\fR command. +.PP +The \fIoption\fR argument determines what action is carried out +by the command. The legal \fIoptions\fR (which may be abbreviated) +are: +.TP +\fBfind classes ?\fIpattern\fR? +Returns a list of classes found in the current namespace context. +If the optional \fIpattern\fR is specified, then the reported names +are compared using the rules of the "\fBstring match\fR" command, +and only matching names are reported. +.sp +If a class resides in the current namespace context, this command +reports its simple name--without any qualifiers. However, if the +\fIpattern\fR contains \fB::\fR qualifiers, or if the class resides +in another context, this command reports its fully-qualified name. +.TP +\fBfind objects ?\fIpattern\fR? ?\fB-class \fIclassName\fR? ?\fB-isa \fIclassName\fR? +Returns a list of objects found in the current namespace context. +If the optional \fIpattern\fR is specified, then the reported names +are compared using the rules of the "\fBstring match\fR" command, +and only matching names are reported. +If the optional "\fB-class\fR" parameter is specified, this list is +restricted to objects whose most-specific class is \fIclassName\fR. +If the optional "\fB-isa\fR" parameter is specified, this list is +further restricted to objects having the given \fIclassName\fR +anywhere in their heritage. +.sp +If an object resides in the current namespace context, this command +reports its simple name--without any qualifiers. However, if the +\fIpattern\fR contains \fB::\fR qualifiers, or if the object resides +in another context, this command reports its fully-qualified name. + +.SH KEYWORDS +class, object, search, import diff --git a/itcl/itcl/doc/itcl.n b/itcl/itcl/doc/itcl.n new file mode 100644 index 00000000000..89e3a4428a7 --- /dev/null +++ b/itcl/itcl/doc/itcl.n @@ -0,0 +1,147 @@ +'\" +'\" Copyright (c) 1993-1998 Lucent Technologies, Inc. +'\" +'\" See the file "license.terms" for information on usage and redistribution +'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. +'\" +'\" RCS: $Id$ +'\" +.so man.macros +.TH itcl n 3.0 itcl "[incr\ Tcl]" +.BS +'\" Note: do not modify the .SH NAME line immediately below! +.SH NAME +itcl \- object-oriented extensions to Tcl +.BE + +.SH DESCRIPTION +.PP +\fB[incr\ Tcl]\fR provides object-oriented extensions to Tcl, much as +C++ provides object-oriented extensions to C. The emphasis of this +work, however, is not to create a whiz-bang object-oriented +programming environment. Rather, it is to support more structured +programming practices in Tcl without changing the flavor of the language. +More than anything else, \fB[incr\ Tcl]\fR provides a means of +encapsulating related procedures together with their shared data +in a namespace that is hidden from the outside world. +It encourages better programming by promoting the object-oriented +"library" mindset. It also allows for code re-use through inheritance. + +.SH CLASSES +.PP +The fundamental construct in \fB[incr\ Tcl]\fR is the class definition. +Each class acts as a template for actual objects that can be created. +Each object has its own unique bundle of data, which contains instances +of the "variables" defined in the class. Special procedures called +"methods" are used to manipulate individual objects. Methods are just +like the operations that are used to manipulate Tk widgets. The +"\fBbutton\fR" widget, for example, has methods such as "flash" and +"invoke" that cause a particular button to blink and invoke its command. +.PP +Within the body of a method, the "variables" defined in the class +are automatically available. They need not be declared with anything +like the \fBglobal\fR command. Within another class method, a method +can be invoked like any other command\-simply by using its name. +From any other context, the method name must be prefaced by an object +name, which provides a context for the data that the method can access. +.PP +Each class has its own namespace containing things that are common +to all objects which belong to the class. For example, "common" data +members are shared by all objects in the class. They are global +variables that exist in the class namespace, but since they are +included in the class definition, they need not be declared using +the \fBglobal\fR command; they are automatically available to any +code executing in the class context. A class can also create +ordinary global variables, but these must be declared using the +\fBglobal\fR command each time they are used. +.PP +Classes can also have ordinary procedures declared as "procs". +Within another class method or proc, a proc can be invoked like +any other command\-simply by using its name. From any other context, +the procedure name should be qualified with the class namespace +like "\fIclassName\fB::\fIproc\fR". Class procs execute in the +class context, and therefore have automatic access to all "common" +data members. However, they cannot access object-specific "variables", +since they are invoked without reference to any specific object. +They are usually used to perform generic operations which affect +all objects belonging to the class. +.PP +Each of the elements in a class can be declared "public", "protected" +or "private". Public elements can be accessed by the class, by +derived classes (other classes that inherit this class), and by +external clients that use the class. Protected elements can be +accessed by the class, and by derived classes. Private elements +are only accessible in the class where they are defined. +.PP +The "public" elements within a class define its interface to the +external world. Public methods define the operations that can +be used to manipulate an object. Public variables are recognized +as configuration options by the "configure" and "cget" methods +that are built into each class. The public interface says +\fIwhat\fR an object will do but not \fIhow\fR it will do it. +Protected and private members, along with the bodies of class +methods and procs, provide the implementation details. Insulating +the application developer from these details leaves the class designer +free to change them at any time, without warning, and without affecting +programs that rely on the class. It is precisely this encapsulation +that makes object-oriented programs easier to understand and maintain. +.PP +The fact that \fB[incr\ Tcl]\fR objects look like Tk widgets is +no accident. \fB[incr\ Tcl]\fR was designed this way, to blend +naturally into a Tcl/Tk application. But \fB[incr\ Tcl]\fR +extends the Tk paradigm from being merely object-based to being +fully object-oriented. An object-oriented system supports +inheritance, allowing classes to share common behaviors by +inheriting them from an ancestor or base class. Having a base +class as a common abstraction allows a programmer to treat +related classes in a similar manner. For example, a toaster +and a blender perform different (specialized) functions, but +both share the abstraction of being appliances. By abstracting +common behaviors into a base class, code can be \fIshared\fR rather +than \fIcopied\fR. The resulting application is easier to +understand and maintain, and derived classes (e.g., specialized +appliances) can be added or removed more easily. +.PP +This description was merely a brief overview of object-oriented +programming and \fB[incr\ Tcl]\fR. A more tutorial introduction is +presented in the paper included with this distribution. See the +\fBclass\fR command for more details on creating and using classes. + +.SH NAMESPACES +.PP +\fB[incr\ Tcl]\fR now includes a complete namespace facility. +A namespace is a collection of commands and global variables that +is kept apart from the usual global scope. This allows Tcl code +libraries to be packaged in a well-defined manner, and prevents +unwanted interactions with other libraries. A namespace can also +have child namespaces within it, so one library can contain its +own private copy of many other libraries. A namespace can also +be used to wrap up a group of related classes. The global scope +(named "\fC::\fR") is the root namespace for an interpreter; all +other namespaces are contained within it. +.PP +See the \fBnamespace\fR command for details on creating and +using namespaces. + +.SH MEGA-WIDGETS +.PP +Mega-widgets are high-level widgets that are constructed using +Tk widgets as component parts, usually without any C code. A +fileselectionbox, for example, may have a few listboxes, some +entry widgets and some control buttons. These individual widgets +are put together in a way that makes them act like one big +widget. +.PP +\fB[incr\ Tk]\fR is a framework for building mega-widgets. It +uses \fB[incr\ Tcl]\fR to support the object paradigm, and adds +base classes which provide default widget behaviors. See the +\fBitk\fR man page for more details. +.PP +\fB[incr\ Widgets]\fR is a library of mega-widgets built using +\fB[incr\ Tk]\fR. It contains more than 30 different widget +classes that can be used right out of the box to build Tcl/Tk +applications. Each widget class has its own man page describing +the features available. + +.SH KEYWORDS +class, object, object-oriented, namespace, mega-widget diff --git a/itcl/itcl/doc/itcl_class.n b/itcl/itcl/doc/itcl_class.n new file mode 100644 index 00000000000..5f571cd3a3a --- /dev/null +++ b/itcl/itcl/doc/itcl_class.n @@ -0,0 +1,419 @@ +'\" +'\" Copyright (c) 1993-1998 Lucent Technologies, Inc. +'\" +'\" See the file "license.terms" for information on usage and redistribution +'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. +'\" +'\" RCS: $Id$ +'\" +.so man.macros +.TH itcl_class n 3.0 itcl "[incr\ Tcl]" +.BS +'\" Note: do not modify the .SH NAME line immediately below! +.SH NAME +itcl_class \- create a class of objects (obsolete) +.SH SYNOPSIS +\fBitcl_class \fIclassName\fR \fB{ +.br + \fBinherit \fIbaseClass\fR ?\fIbaseClass\fR...? +.br + \fBconstructor \fIargs\fR ?\fIinit\fR? \fIbody\fR +.br + \fBdestructor \fIbody\fR +.br + \fBmethod \fIname args body\fR +.br + \fBproc \fIname args body\fR +.br + \fBpublic \fIvarName\fR ?\fIinit\fR? ?\fIconfig\fR? +.br + \fBprotected \fIvarName\fR ?\fIinit\fR? +.br + \fBcommon \fIvarName\fR ?\fIinit\fR? +.br +\fB}\fR +.sp +\fIclassName objName\fR ?\fIargs...\fR? +.br +\fIclassName\fR \fB#auto\fR ?\fIargs...\fR? +.br +\fIclassName\fR \fB::\fR \fIproc\fR ?\fIargs...\fR? +.sp +\fIobjName method\fR ?\fIargs...\fR? +.sp +\fICommands available within class methods/procs:\fR +.br +\fBglobal \fIvarName\fR ?\fIvarName...\fR? +.br +\fBprevious \fIcommand\fR ?\fIargs...\fR? +.br +\fBvirtual \fIcommand\fR ?\fIargs...\fR? +.BE + +.SH DESCRIPTION +.PP +This command is considered obsolete, but is retained for +backward-compatibility with earlier versions of \fB[incr\ Tcl]\fR. +It has been replaced by the \fBclass\fR command, which should +be used for any new development. + +.TP +\fBitcl_class \fIclassName definition\fR +Provides the definition for a class named \fIclassName\fR. If +\fIclassName\fR is already defined, then this command returns +an error. If the class definition is successfully parsed, +\fIclassName\fR becomes a command in the current namespace +context, handling the +creation of objects and providing access to class scope. +The class \fIdefinition\fR +is evaluated as a series of Tcl statements that define +elements within the class. In addition to the usual +commands, the following class definition commands are recognized: +.RS +.TP +\fBinherit \fIbaseClass\fR ?\fIbaseClass\fR...? +Declares one or more base classes, causing the current class to +inherit their characteristics. Classes must have been defined by +a previous \fBitcl_class\fR command, or must be available to the +auto-loading facility (see "AUTO-LOADING" below). A single class +definition can contain no more than one \fBinherit\fR command. +.RS +.LP +When the same member name appears in two or more base classes, +the base class that appears first in the \fBinherit\fR list takes +precedence. For example, if classes "Foo" and "Bar" both contain +the member "x", then the "\fBinherit\fR" statement: +.CS +inherit Foo Bar +.CE +allows "Foo::x" to be accessed simply as "x" but forces "Bar::x" (and +all other inherited members named "x") to be referenced with their +explicit "\fIclass\fR::\fImember\fR" name. +.RE +.TP +\fBconstructor \fIargs\fR ?\fIinit\fR? \fIbody\fR +Declares the argument list and body used for the constructor, which +is automatically invoked whenever an object is created. Before +.VS +the \fIbody\fR is executed, the optional \fIinit\fR statement is +used to invoke any base class constructors that require arguments. +Variables in the \fIargs\fR specification can be accessed in the +\fIinit\fR code fragment, and passed to base class constructors. +After evaluating the \fIinit\fR statement, any base class +constructors that have not been executed are invoked without +arguments. This ensures that all base classes are fully +constructed before the constructor \fIbody\fR is executed. +.VE +If construction is successful, the constructor always returns +the object name\-regardless of how the \fIbody\fR is defined\-and +the object name becomes a command in the current namespace context. +If construction fails, an error message is returned. +.TP +\fBdestructor \fIbody\fR +Declares the body used for the destructor, which is automatically invoked +whenever an object is deleted. If the destructor is successful, the object +data is destroyed and the object name is removed as a command from the +interpreter. If destruction fails, an error message is returned +and the object remains. +.RS +.LP +.VS +When an object is destroyed, all destructors in a class hierarchy +are invoked in order from most- to least-specific. This is the +order that the classes are reported by the "\fBinfo heritage\fR" +command, and it is exactly the opposite of the default constructor +order. +.VE +.RE +.TP +\fBmethod \fIname args body\fR +Declares a method called \fIname\fR with an argument list \fIargs\fR +and a \fIbody\fR of Tcl statements. A method is just like the usual +Tcl "proc" except that it has transparent access to +.VS +object-specific variables, as well as +.VE +common variables. Within the class scope, a method can be invoked +like any other command\-simply by using its name. Outside of the +class scope, the method name must be prefaced by an object +name. Methods in a base class that are redefined in the current class +or hidden by another base class can be explicitly scoped using the +"\fIclass\fR::\fImethod\fR" syntax. +.TP +\fBproc \fIname args body\fR +Declares a proc called \fIname\fR with an argument list \fIargs\fR +and a \fIbody\fR of Tcl statements. A proc is similar to a method, +except that it can be invoked without referring to a specific object, +and therefore has access only to common variables\-not +.VS +to object-specific variables declared with the \fBpublic\fR +and \fBprotected\fR commands. +.VE +Within the class scope, a proc can be invoked +like any other command\-simply by using its name. In any other +namespace context, the proc is invoked using a qualified name +like "\fIclassName\fB::\fIproc\fR". +Procs in a base class that are redefined in the current +class, or hidden by another base class, can also be accessed +via their qualified name. +.TP +\fBpublic \fIvarName\fR ?\fIinit\fR? ?\fIconfig\fR? +Declares a public variable named \fIvarName\fR. Public variables are +visible in methods within the scope of their class and any derived class. +In addition, they can be modified outside of the class scope using the special +"config" formal argument (see "ARGUMENT LISTS" above). If the optional +\fIinit\fR is specified, it is used as the initial value of the variable +when a new object is created. If the optional \fIconfig\fR command +is specified, +it is invoked whenever a public variable is modified via the "config" +formal argument; if the \fIconfig\fR command returns an error, the +public variable is reset to its value before configuration, and the +method handling the configuration returns an error. +.TP +\fBprotected \fIvarName\fR ?\fIinit\fR? +Declares a protected variable named \fIvarName\fR. Protected variables +are visible in methods within the scope of their class and any derived class, +but cannot +be modified outside of the class scope. If the optional \fIinit\fR +is specified, it is used as the initial value of the variable when a new +object is created. Initialization forces the variable to be a simple +scalar value; uninitialized variables, on the other hand, can be used +as arrays. All objects have a built-in protected variable named +"this" which is initialized to the instance name for the object. +.TP +\fBcommon \fIvarName\fR ?\fIinit\fR? +Declares a common variable named \fIvarName\fR. Common variables are +shared among all objects in a class. They are visible in methods and +procs in the scope of their class and any derived class, but cannot be +modified outside of the class scope. +If the optional \fIinit\fR is specified, it is used as the +initial value of the variable. Initialization forces the variable to be +a simple scalar value; uninitialized variables, on the other hand, can +be used as arrays. +.RS +.LP +Once a common variable has been declared, it can be configured using +ordinary Tcl code within the class definition. This facility is +particularly useful when the initialization of the variable is +non-trivial\-when the variable contains an array of values, for example: +.CS +itcl_class Foo { + . + . + common boolean + set boolean(true) 1 + set boolean(false) 0 +} +.CE +.RE +.RE + +.SH CLASS USAGE +.PP +When a class definition has been loaded (or made available to the +auto-loader), the class name can be used as a command. +.TP +\fIclassName objName\fR ?\fIargs...\fR? +Creates a new object in class \fIclassName\fR with the name \fIobjName\fR. +Remaining arguments are passed to the constructor. If construction is +successful, the object name is returned and this name becomes a command +in the current namespace context. Otherwise, an error is returned. +.TP +\fIclassName\fR #auto ?\fIargs...\fR? +Creates a new object in class \fIclassName\fR with an automatically +generated name. Names are of the form \fIclassName\fR, +.VS +where the \fIclassName\fR part is modified to start with a lowercase +letter. In class "Toaster", for example, the "\fB#auto\fR" specification +would produce names toaster0, toaster1, etc. Remaining arguments are +.VE +passed to the constructor. If construction is successful, the object +name is returned and this name becomes a command in the current +namespace context. Otherwise, an error is returned. +.TP +\fIclassName\fR :: \fIproc\fR ?\fIargs...\fR? +Used outside of the class scope to invoke a class proc named \fIproc\fR. +Class procs are like ordinary Tcl procs, except that they are executed +in the scope of the class and therefore have transparent +access to common data members. +.RS +.LP +.VS +Notice that, unlike any other scope qualifier in \fB[incr\ Tcl]\fR, the "::" +shown above is surrounded by spaces. This is unnecessary with the +new namespace facility, and is considered obsolete. The capability +is still supported, however, to provide backward-compatibility with +earlier versions. +.VE +.RE + +.SH OBJECT USAGE +.TP +\fIobjName method\fR ?\fIargs...\fR? +Invokes a method named \fImethod\fR to operate on the specified object. +Remaining arguments are passed to the method. The method name can +be "constructor", "destructor", any method name appearing in the +class definition, or any of the following built-in methods. +.SH BUILT-IN METHODS +.TP +\fIobjName\fR \fBisa \fIclassName\fR +Returns non-zero if the given \fIclassName\fR can be found in the +object's heritage, and zero otherwise. +.TP +\fIobjName\fR \fBdelete\fR +Invokes the destructor associated with an object. +If the destructor is successful, data associated with the object is +deleted and \fIobjName\fR is removed as a command from the +interpreter. Returns the empty string, regardless of the destructor +body. +.RS +.LP +.VS +The built-in \fBdelete\fR method has been replaced by the +"\fBdelete object\fR" command in the global namespace, and +is considered obsolete. The capability is still supported, +however, to provide backward-compatibility with earlier versions. +.VE +.RE +.TP +\fIobjName\fR \fBinfo \fIoption\fR ?\fIargs...\fR? +Returns information related to the class definition or to +a particular object named \fIobjName\fR. +The \fIoption\fR parameter includes the following things, as well as +the options recognized by the usual Tcl "info" command: +.RS +.TP +\fIobjName\fR \fBinfo class\fR +.VS +Returns the name of the most-specific class for object \fIobjName\fR. +.VE +.TP +\fIobjName\fR \fBinfo inherit\fR +Returns the list of base classes as they were defined in the +"\fBinherit\fR" command, or an empty string if this class +has no base classes. +.TP +\fIobjName\fR \fBinfo heritage\fR +Returns the current class name and the entire list of base classes in +the order that they are traversed for member lookup and object +destruction. +.TP +\fIobjName\fR \fBinfo method\fR ?\fImethodName\fR? ?\fB-args\fR? ?\fB-body\fR? +With no arguments, this command returns a list of all class methods. +If \fImethodName\fR is specified, it returns information for a specific method. +If neither of the optional \fB-args\fR or \fB-body\fR flags is specified, +a complete method definition is returned as a list of three elements +including the method name, argument list and body. Otherwise, the +requested information is returned without the method name. +If the \fImethodName\fR is not recognized, an empty string is returned. +.TP +\fIobjName\fR \fBinfo proc\fR ?\fIprocName\fR? ?\fB-args\fR? ?\fB-body\fR? +With no arguments, this command returns a list of all class procs. +If \fIprocName\fR is specified, it returns information for a specific proc. +If neither of the optional \fB-args\fR or \fB-body\fR flags is specified, +a complete proc definition is returned as a list of three elements +including the proc name, argument list and body. Otherwise, the +requested information is returned without the proc name. +If the \fIprocName\fR is not recognized, an empty string is returned. +.TP +\fIobjName\fR \fBinfo public\fR ?\fIvarName\fR? ?\fB-init\fR? ?\fB-value\fR? ?\fB-config\fR? +With no arguments, this command returns a list of all public variables. +If \fIvarName\fR is specified, it returns information for a specific public +variable. +If none of the optional \fB-init\fR, \fB-value\fR or \fB-config\fR flags +are specified, all available information is returned as a list of four +elements including the variable name, initial value, current value, +and configuration commands. Otherwise, the requested information is +returned without the variable name. +If the \fIvarName\fR is not recognized, an empty string is returned. +.TP +\fIobjName\fR \fBinfo protected\fR ?\fIvarName\fR? ?\fB-init\fR? ?\fB-value\fR? +With no arguments, this command returns a list of all protected variables. +If \fIvarName\fR is specified, it returns information for a specific protected +variable. +If neither of the optional \fB-init\fR or \fB-value\fR flags is specified, +all available information is returned as a list of three elements +including the variable name, initial value and current value. +Otherwise, the requested information is returned without the variable name. +If the \fIvarName\fR is not recognized, an empty string is returned. +.TP +\fIobjName\fR \fBinfo common\fR ?\fIvarName\fR? ?\fB-init\fR? ?\fB-value\fR? +With no arguments, this command returns a list of all common variables. +If \fIvarName\fR is specified, it returns information for a specific common +variable. +If neither of the optional \fB-init\fR or \fB-value\fR flags is specified, +all available information is returned as a list of three elements +including the variable name, initial value and current value. +Otherwise, the requested information is returned without the variable name. +If the \fIvarName\fR is not recognized, an empty string is returned. +.RE +.SH OTHER BUILT-IN COMMANDS +The following commands are also available within the scope of each class. +They cannot be accessed from outside of the class as proper methods or +procs; rather, they are useful inside the class when implementing its +functionality. +.TP +\fBglobal \fIvarName\fR ?\fIvarName...\fR? +Creates a link to one or more global variables in the current +namespace context. Global variables can also be accessed in +other namespaces by including namespace qualifiers in \fIvarName\fR. +This is useful when communicating with Tk widgets that rely on global +variables. +.TP +\fBprevious \fIcommand\fR ?\fIargs...\fR? +Invokes \fIcommand\fR in the scope of the most immediate base class +.VS +(i.e., the "previous" class) for the object. For classes using single +.VE +inheritance, this facility can be used to avoid hard-wired base class +references of the form "\fIclass\fR::\fIcommand\fR", making code easier +to maintain. For classes using multiple inheritance, the utility of +this function is dubious. +If the class at the relevant scope has no base class, an error is returned. +.TP +\fBvirtual \fIcommand\fR ?\fIargs...\fR? +.VS +Invokes \fIcommand\fR in the scope of the most-specific class for the +object. The methods within a class are automatically virtual; whenever +an unqualified method name is used, it always refers to the most-specific +implementation for that method. This function provides a way of +evaluating code fragments in a base class that have access to the +most-specific object information. It is useful, for example, for +creating base classes that can capture and save an object's state. +It inverts the usual notions of object-oriented programming, however, +and should therefore be used sparingly. +.VE + +.SH AUTO-LOADING +.PP +Class definitions need not be loaded explicitly; they can be loaded as +needed by the usual Tcl auto-loading facility. Each directory containing +class definition files should have an accompanying "tclIndex" file. +Each line in this file identifies a Tcl procedure or \fB[incr\ Tcl]\fR +class definition and the file where the definition can be found. +.PP +For example, suppose a directory contains the definitions for classes +"Toaster" and "SmartToaster". Then the "tclIndex" file for this +directory would look like: +.CS +# Tcl autoload index file, version 2.0 for [incr Tcl] +# This file is generated by the "auto_mkindex" command +# and sourced to set up indexing information for one or +# more commands. Typically each line is a command that +# sets an element in the auto_index array, where the +# element name is the name of a command and the value is +# a script that loads the command. + +set auto_index(::Toaster) "source $dir/Toaster.itcl" +set auto_index(::SmartToaster) "source $dir/SmartToaster.itcl" +.PP +The \fBauto_mkindex\fR command is used to automatically +generate "tclIndex" files. +.CE +The auto-loader must be made aware of this directory by appending +the directory name to the "auto_path" variable. When this is in +place, classes will be auto-loaded as needed when used in an +application. + +.SH KEYWORDS +class, object, object-oriented diff --git a/itcl/itcl/doc/itcl_info.n b/itcl/itcl/doc/itcl_info.n new file mode 100644 index 00000000000..083616a3503 --- /dev/null +++ b/itcl/itcl/doc/itcl_info.n @@ -0,0 +1,62 @@ +'\" +'\" Copyright (c) 1993-1998 Lucent Technologies, Inc. +'\" +'\" See the file "license.terms" for information on usage and redistribution +'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. +'\" +'\" RCS: $Id$ +'\" +.so man.macros +.TH itcl_info n 3.0 itcl "[incr\ Tcl]" +.BS +'\" Note: do not modify the .SH NAME line immediately below! +.SH NAME +itcl_info \- query info regarding classes and objects (obsolete) +.SH SYNOPSIS +\fBitcl_info classes ?\fIpattern\fR? +.br +\fBitcl_info objects ?\fIpattern\fR? ?\fB-class \fIclassName\fR? ?\fB-isa \fIclassName\fR? +.BE + +.SH DESCRIPTION +.PP +This command is considered obsolete, but is retained for +backward-compatibility with earlier versions of \fB[incr\ Tcl]\fR. +It has been replaced by the "\fBinfo classes\fR" and "\fBinfo objects\fR" +commands, which should be used for any new development. + +.PP +The following commands are available in the global namespace to +query information about classes and objects that have been created. +.TP +\fBitcl_info classes ?\fIpattern\fR? +Returns a list of classes available in the current namespace context. +.VS +If a class belongs to the current namespace context, its simple name +is reported; otherwise, if a class is imported from another namespace, +its fully-qualified name is reported. +.VE +.sp +If the optional \fIpattern\fR is specified, then the reported names +are compared using the rules of the "\fBstring match\fR" command, +and only matching names are reported. +.TP +\fBitcl_info objects ?\fIpattern\fR? ?\fB-class \fIclassName\fR? ?\fB-isa \fIclassName\fR? +Returns a list of objects available in the current namespace context. +.VS +If an object belongs to the current namespace context, its simple name +is reported; otherwise, if an object is imported from another namespace, +its fully-qualified access command is reported. +.VE +.sp +If the optional \fIpattern\fR is specified, then the reported names +are compared using the rules of the "\fBstring match\fR" command, +and only matching names are reported. +If the optional "\fB-class\fR" parameter is specified, this list is +restricted to objects whose most-specific class is \fIclassName\fR. +If the optional "\fB-isa\fR" parameter is specified, this list is +further restricted to objects having the given \fIclassName\fR +anywhere in their heritage. + +.SH KEYWORDS +class, object, object-oriented diff --git a/itcl/itcl/doc/itclsh.1 b/itcl/itcl/doc/itclsh.1 new file mode 100644 index 00000000000..6fe87d24aa1 --- /dev/null +++ b/itcl/itcl/doc/itclsh.1 @@ -0,0 +1,30 @@ +'\" +'\" Copyright (c) 1996 Lucent Technologies +'\" +'\" See the file "license.terms" for information on usage and redistribution +'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. +'\" +'\" $Id$ +'\" +.so man.macros +.TH itclsh 1 "" itcl "[incr\ Tcl]" +.BS +'\" Note: do not modify the .SH NAME line immediately below! +.SH NAME +itclsh \- Simple shell for [incr Tcl] +.SH SYNOPSIS +\fBitclsh\fR ?\fIfileName arg arg ...\fR? +.BE + +.SH DESCRIPTION +.PP +\fBitclsh\fR is a shell-like application that reads Tcl commands +from its standard input, or from a file, and evaluates them. +It is just like \fBtclsh\fR, but includes the \fB[incr\ Tcl]\fR +extensions for object-oriented programming. +.PP +See the \fBtclsh\fR man page for details concerning usage. See +the \fBitcl\fR man page for an overview of \fB[incr\ Tcl]\fR. + +.SH KEYWORDS +Tcl, itcl, interpreter, script file, shell diff --git a/itcl/itcl/doc/itclvars.n b/itcl/itcl/doc/itclvars.n new file mode 100644 index 00000000000..507124109b3 --- /dev/null +++ b/itcl/itcl/doc/itclvars.n @@ -0,0 +1,96 @@ +'\" +'\" Copyright (c) 1993-1998 Lucent Technologies, Inc. +'\" +'\" See the file "license.terms" for information on usage and redistribution +'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. +'\" +'\" RCS: $Id$ +'\" +.so man.macros +.TH itclvars n 3.0 itcl "[incr\ Tcl]" +.BS +'\" Note: do not modify the .SH NAME line immediately below! +.SH NAME +itclvars \- variables used by [incr\ Tcl] +.BE + +.SH DESCRIPTION +.PP +The following global variables are created and managed automatically +by the \fB[incr\ Tcl]\fR library. Except where noted below, these +variables should normally be treated as read-only by application-specific +code and by users. +.TP +\fBitcl::library\fR +When an interpreter is created, \fB[incr\ Tcl]\fR initializes this variable +to hold the name of a directory containing the system library of +\fB[incr\ Tcl]\fR scripts. The initial value of \fBitcl::library\fR +is set from the ITCL_LIBRARY environment variable if it exists, +or from a compiled-in value otherwise. +.TP +\fBitcl::patchLevel\fR +When an interpreter is created, \fB[incr\ Tcl]\fR initializes this +variable to hold the current patch level for \fB[incr\ Tcl]\fR. +For example, the value "\fB2.0p1\fR" indicates \fB[incr\ Tcl]\fR +version 2.0 with the first set of patches applied. +.TP +\fBitcl::purist\fR +When an interpreter is created containing Tcl/Tk and the +\fB[incr\ Tcl]\fR namespace facility, this variable controls +a "backward-compatibility" mode for widget access. +.sp +In vanilla Tcl/Tk, there is a single pool of commands, so the +access command for a widget is the same as the window name. +When a widget is created within a namespace, however, its access +command is installed in that namespace, and should be accessed +outside of the namespace using a qualified name. For example, +.CS +namespace foo { + namespace bar { + button .b -text "Testing" + } +} +foo::bar::.b configure -background red +pack .b +.CE +Note that the window name "\fC.b\fR" is still used in conjunction +with commands like \fBpack\fR and \fBdestroy\fR. However, the +access command for the widget (i.e., name that appears as the +\fIfirst\fR argument on a command line) must be more specific. +.sp +The "\fBwinfo command\fR" command can be used to query the +fully-qualified access command for any widget, so one can write: +.CS +[winfo command .b] configure -background red +.CE +and this is good practice when writing library procedures. Also, +in conjunction with the \fBbind\fR command, the "%q" field can be +used in place of "%W" as the access command: +.CS +bind Button {%q flash; %q invoke} +.CE +While this behavior makes sense from the standpoint of encapsulation, +it causes problems with existing Tcl/Tk applications. Many existing +applications are written with bindings that use "%W". Many +library procedures assume that the window name is the access +command. +.sp +The \fBitcl::purist\fR variable controls a backward-compatibility +mode. By default, this variable is "0", and the window name +can be used as an access command in any context. Whenever the +\fBunknown\fR procedure stumbles across a widget name, it simply +uses "\fBwinfo command\fR" to determine the appropriate command +name. If this variable is set to "1", this backward-compatibility +mode is disabled. This gives better encapsulation, but using the +window name as the access command may lead to "invalid command" +errors. +.TP +\fBitcl::version\fR +When an interpreter is created, \fB[incr\ Tcl]\fR initializes this +variable to hold the version number of the form \fIx.y\fR. +Changes to \fIx\fR represent major changes with probable +incompatibilities and changes to \fIy\fR represent small enhancements +and bug fixes that retain backward compatibility. + +.SH KEYWORDS +itcl, variables diff --git a/itcl/itcl/doc/license.terms b/itcl/itcl/doc/license.terms new file mode 100644 index 00000000000..5ad564315d8 --- /dev/null +++ b/itcl/itcl/doc/license.terms @@ -0,0 +1,27 @@ +------------------------------------------------------------------------ +>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> [incr Tcl] <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + + AUTHOR: Michael J. McLennan + Bell Labs Innovations for Lucent Technologies + mmclennan@lucent.com + http://www.tcltk.com/itcl +======================================================================== + Copyright (c) 1993-1996 Lucent Technologies +======================================================================== +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that the copyright notice and warranty disclaimer appear in +supporting documentation, and that the names of Lucent Technologies +any of their entities not be used in advertising or publicity +pertaining to distribution of the software without specific, written +prior permission. + +Lucent Technologies disclaims all warranties with regard to this +software, including all implied warranties of merchantability and +fitness. In no event shall Lucent be liable for any special, indirect +or consequential damages or any damages whatsoever resulting from loss +of use, data or profits, whether in an action of contract, negligence +or other tortuous action, arising out of or in connection with the use +or performance of this software. +======================================================================== diff --git a/itcl/itcl/doc/local.n b/itcl/itcl/doc/local.n new file mode 100644 index 00000000000..2c3a0c883bd --- /dev/null +++ b/itcl/itcl/doc/local.n @@ -0,0 +1,75 @@ +'\" +'\" Copyright (c) 1993-1998 Lucent Technologies, Inc. +'\" +'\" See the file "license.terms" for information on usage and redistribution +'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. +'\" +'\" RCS: $Id$ +'\" +.so man.macros +.TH local n "" itcl "[incr\ Tcl]" +.BS +'\" Note: do not modify the .SH NAME line immediately below! +.SH NAME +local \- create an object local to a procedure +.SH SYNOPSIS +\fBlocal \fIclassName objName\fR ?\fIarg arg ...\fR? +.BE + +.SH DESCRIPTION +.PP +The \fBlocal\fR command creates an \fB[incr\ Tcl]\fR object that +is local to the current call frame. When the call frame goes away, +the object is automatically deleted. This command is useful for +creating objects that are local to a procedure. +.PP +As a side effect, this command creates a variable named +"\fCitcl-local-\fIxxx\fR", where \fIxxx\fR is the name of +the object that is created. This variable detects when the +call frame is destroyed and automatically deletes the +associated object. + +.SH EXAMPLE +In the following example, a simple "counter" object is used +within the procedure "test". The counter is created as a +local object, so it is automatically deleted each time the +procedure exits. The \fBputs\fR statements included in the +constructor/destructor show the object coming and going +as the procedure is called. +.CS +class counter { + private variable count 0 + constructor {} { + puts "created: $this" + } + destructor { + puts "deleted: $this" + } + + method bump {{by 1}} { + incr count $by + } + method get {} { + return $count + } +} + +proc test {val} { + local counter x + for {set i 0} {$i < $val} {incr i} { + x bump + } + return [x get] +} + +set result [test 5] +puts "test: $result" + +set result [test 10] +puts "test: $result" + +puts "objects: [info objects]" +.CE + +.SH KEYWORDS +class, object, procedure diff --git a/itcl/itcl/doc/man.macros b/itcl/itcl/doc/man.macros new file mode 100644 index 00000000000..3af2da92934 --- /dev/null +++ b/itcl/itcl/doc/man.macros @@ -0,0 +1,236 @@ +'\" The definitions below are for supplemental macros used in Tcl/Tk +'\" manual entries. +'\" +'\" .AP type name in/out ?indent? +'\" Start paragraph describing an argument to a library procedure. +'\" type is type of argument (int, etc.), in/out is either "in", "out", +'\" or "in/out" to describe whether procedure reads or modifies arg, +'\" and indent is equivalent to second arg of .IP (shouldn't ever be +'\" needed; use .AS below instead) +'\" +'\" .AS ?type? ?name? +'\" Give maximum sizes of arguments for setting tab stops. Type and +'\" name are examples of largest possible arguments that will be passed +'\" to .AP later. If args are omitted, default tab stops are used. +'\" +'\" .BS +'\" Start box enclosure. From here until next .BE, everything will be +'\" enclosed in one large box. +'\" +'\" .BE +'\" End of box enclosure. +'\" +'\" .CS +'\" Begin code excerpt. +'\" +'\" .CE +'\" End code excerpt. +'\" +'\" .VS ?version? ?br? +'\" Begin vertical sidebar, for use in marking newly-changed parts +'\" of man pages. The first argument is ignored and used for recording +'\" the version when the .VS was added, so that the sidebars can be +'\" found and removed when they reach a certain age. If another argument +'\" is present, then a line break is forced before starting the sidebar. +'\" +'\" .VE +'\" End of vertical sidebar. +'\" +'\" .DS +'\" Begin an indented unfilled display. +'\" +'\" .DE +'\" End of indented unfilled display. +'\" +'\" .SO +'\" Start of list of standard options for a Tk widget. The +'\" options follow on successive lines, in four columns separated +'\" by tabs. +'\" +'\" .SE +'\" End of list of standard options for a Tk widget. +'\" +'\" .OP cmdName dbName dbClass +'\" Start of description of a specific option. cmdName gives the +'\" option's name as specified in the class command, dbName gives +'\" the option's name in the option database, and dbClass gives +'\" the option's class in the option database. +'\" +'\" .UL arg1 arg2 +'\" Print arg1 underlined, then print arg2 normally. +'\" +'\" SCCS: @(#) man.macros 1.9 97/08/22 18:50:59 +'\" +'\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. +.if t .wh -1.3i ^B +.nr ^l \n(.l +.ad b +'\" # Start an argument description +.de AP +.ie !"\\$4"" .TP \\$4 +.el \{\ +. ie !"\\$2"" .TP \\n()Cu +. el .TP 15 +.\} +.ie !"\\$3"" \{\ +.ta \\n()Au \\n()Bu +\&\\$1 \\fI\\$2\\fP (\\$3) +.\".b +.\} +.el \{\ +.br +.ie !"\\$2"" \{\ +\&\\$1 \\fI\\$2\\fP +.\} +.el \{\ +\&\\fI\\$1\\fP +.\} +.\} +.. +'\" # define tabbing values for .AP +.de AS +.nr )A 10n +.if !"\\$1"" .nr )A \\w'\\$1'u+3n +.nr )B \\n()Au+15n +.\" +.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n +.nr )C \\n()Bu+\\w'(in/out)'u+2n +.. +.AS Tcl_Interp Tcl_CreateInterp in/out +'\" # BS - start boxed text +'\" # ^y = starting y location +'\" # ^b = 1 +.de BS +.br +.mk ^y +.nr ^b 1u +.if n .nf +.if n .ti 0 +.if n \l'\\n(.lu\(ul' +.if n .fi +.. +'\" # BE - end boxed text (draw box now) +.de BE +.nf +.ti 0 +.mk ^t +.ie n \l'\\n(^lu\(ul' +.el \{\ +.\" Draw four-sided box normally, but don't draw top of +.\" box if the box started on an earlier page. +.ie !\\n(^b-1 \{\ +\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' +.\} +.el \}\ +\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' +.\} +.\} +.fi +.br +.nr ^b 0 +.. +'\" # VS - start vertical sidebar +'\" # ^Y = starting y location +'\" # ^v = 1 (for troff; for nroff this doesn't matter) +.de VS +.if !"\\$2"" .br +.mk ^Y +.ie n 'mc \s12\(br\s0 +.el .nr ^v 1u +.. +'\" # VE - end of vertical sidebar +.de VE +.ie n 'mc +.el \{\ +.ev 2 +.nf +.ti 0 +.mk ^t +\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' +.sp -1 +.fi +.ev +.\} +.nr ^v 0 +.. +'\" # Special macro to handle page bottom: finish off current +'\" # box/sidebar if in box/sidebar mode, then invoked standard +'\" # page bottom macro. +.de ^B +.ev 2 +'ti 0 +'nf +.mk ^t +.if \\n(^b \{\ +.\" Draw three-sided box if this is the box's first page, +.\" draw two sides but no top otherwise. +.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c +.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c +.\} +.if \\n(^v \{\ +.nr ^x \\n(^tu+1v-\\n(^Yu +\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c +.\} +.bp +'fi +.ev +.if \\n(^b \{\ +.mk ^y +.nr ^b 2 +.\} +.if \\n(^v \{\ +.mk ^Y +.\} +.. +'\" # DS - begin display +.de DS +.RS +.nf +.sp +.. +'\" # DE - end display +.de DE +.fi +.RE +.sp +.. +'\" # SO - start of list of standard options +.de SO +.SH "STANDARD OPTIONS" +.LP +.nf +.ta 4c 8c 12c +.ft B +.. +'\" # SE - end of list of standard options +.de SE +.fi +.ft R +.LP +See the \\fBoptions\\fR manual entry for details on the standard options. +.. +'\" # OP - start of full description for a single option +.de OP +.LP +.nf +.ta 4c +Command-Line Name: \\fB\\$1\\fR +Database Name: \\fB\\$2\\fR +Database Class: \\fB\\$3\\fR +.fi +.IP +.. +'\" # CS - begin code excerpt +.de CS +.RS +.nf +.ta .25i .5i .75i 1i +.. +'\" # CE - end code excerpt +.de CE +.fi +.RE +.. +.de UL +\\$1\l'|0\(ul'\\$2 +.. diff --git a/itcl/itcl/doc/scope.n b/itcl/itcl/doc/scope.n new file mode 100644 index 00000000000..690a99e7511 --- /dev/null +++ b/itcl/itcl/doc/scope.n @@ -0,0 +1,77 @@ +'\" +'\" Copyright (c) 1993-1998 Lucent Technologies, Inc. +'\" +'\" See the file "license.terms" for information on usage and redistribution +'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. +'\" +'\" RCS: $Id$ +'\" +.so man.macros +.TH scope n "" Tcl "[incr\ Tcl]" +.BS +'\" Note: do not modify the .SH NAME line immediately below! +.SH NAME +scope \- capture the namespace context for a variable +.SH SYNOPSIS +\fBscope \fIname\fR +.BE + +.SH DESCRIPTION +.PP +Creates a scoped value for the specified \fIname\fR, which must +be a variable name. If the \fIname\fR is an instance variable, +then the scope command returns a string of the following form: +.CS +@itcl \fIobject varName\fP +.CE +This is recognized in any context as an instance variable belonging +to \fIobject\fR. So with itcl3.0 and beyond, it is possible to use +instance variables in conjunction with widgets. For example, if you +have an object with a private variable \fCx\fR, and you can use +\fCx\fR in conjunction with the \fC-textvariable\fR option of an +entry widget. Before itcl3.0, only common variables could be used +in this manner. +.PP +If the \fIname\fR is not an instance variable, then it must be +a common variable or a global variable. In that case, the scope +command returns the fully qualified name of the variable, e.g., +\fC::foo::bar::x\fR. +.PP +If the \fIname\fR is not recognized as a variable, the scope +command returns an error. +.PP +Ordinary variable names refer to variables in the global namespace. +A scoped value captures a variable name together with its namespace +context in a way that allows it to be referenced properly later. +It is needed, for example, to wrap up variable names when a Tk +widget is used within a namespace: +.CS +namespace foo { + private variable mode 1 + + radiobutton .rb1 -text "Mode #1" \ + -variable [scope mode] -value 1 + pack .rb1 + + radiobutton .rb2 -text "Mode #2" \ + -variable [scope mode] -value 2 + pack .rb2 +} +.CE +Radiobuttons \fC.rb1\fR and \fC.rb2\fR interact via the variable +"mode" contained in the namespace "foo". The \fBscope\fR command +guarantees this by returning the fully qualified variable name +\fC::foo::mode\fR. +.PP +You should never use the \fC@itcl\fR syntax directly. For example, +it is a bad idea to write code like this: +.CS +set {@itcl ::fred x} 3 +puts "value = ${@itcl ::fred x}" +.CE +Instead, you should always use the scope command to generate the +variable name dynamically. Then, you can pass that name to a widget +or to any other bit of code in your program. + +.SH KEYWORDS +code, namespace, variable diff --git a/itcl/itcl/generic/itcl.h b/itcl/itcl/generic/itcl.h new file mode 100644 index 00000000000..fa4c2d36e9e --- /dev/null +++ b/itcl/itcl/generic/itcl.h @@ -0,0 +1,188 @@ +/* + * ------------------------------------------------------------------------ + * PACKAGE: [incr Tcl] + * DESCRIPTION: Object-Oriented Extensions to Tcl + * + * [incr Tcl] provides object-oriented extensions to Tcl, much as + * C++ provides object-oriented extensions to C. It provides a means + * of encapsulating related procedures together with their shared data + * in a local namespace that is hidden from the outside world. It + * promotes code re-use through inheritance. More than anything else, + * it encourages better organization of Tcl applications through the + * object-oriented paradigm, leading to code that is easier to + * understand and maintain. + * + * ADDING [incr Tcl] TO A Tcl-BASED APPLICATION: + * + * To add [incr Tcl] facilities to a Tcl application, modify the + * Tcl_AppInit() routine as follows: + * + * 1) Include this header file near the top of the file containing + * Tcl_AppInit(): + * + * #include "itcl.h" + * + * 2) Within the body of Tcl_AppInit(), add the following lines: + * + * if (Itcl_Init(interp) == TCL_ERROR) { + * return TCL_ERROR; + * } + * + * 3) Link your application with libitcl.a + * + * NOTE: An example file "tclAppInit.c" containing the changes shown + * above is included in this distribution. + * + * ======================================================================== + * AUTHOR: Michael J. McLennan + * Bell Labs Innovations for Lucent Technologies + * mmclennan@lucent.com + * http://www.tcltk.com/itcl + * + * RCS: $Id$ + * ======================================================================== + * Copyright (c) 1993-1998 Lucent Technologies, Inc. + * ------------------------------------------------------------------------ + * See the file "license.terms" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + */ +#ifndef ITCL_H +#define ITCL_H + +#include "tcl.h" + +#define ITCL_VERSION "3.0" +#define ITCL_PATCH_LEVEL "3.0" +#define ITCL_MAJOR_VERSION 3 +#define ITCL_MINOR_VERSION 0 +#define ITCL_RELEASE_LEVEL 0 + +/* + * A special definition used to allow this header file to be included + * in resource files so that they can get obtain version information from + * this file. Resource compilers don't like all the C stuff, like typedefs + * and procedure declarations, that occur below. + */ + +#ifndef RESOURCE_INCLUDED + +#include "tclInt.h" + +#ifdef BUILD_itcl +# undef TCL_STORAGE_CLASS +# define TCL_STORAGE_CLASS DLLEXPORT +#endif + +/* + * Protection levels: + * + * ITCL_PUBLIC - accessible from any namespace + * ITCL_PROTECTED - accessible from namespace that imports in "protected" mode + * ITCL_PRIVATE - accessible only within the namespace that contains it + */ +#define ITCL_PUBLIC 1 +#define ITCL_PROTECTED 2 +#define ITCL_PRIVATE 3 +#define ITCL_DEFAULT_PROTECT 4 + + +/* + * Generic stack. + */ +typedef struct Itcl_Stack { + ClientData *values; /* values on stack */ + int len; /* number of values on stack */ + int max; /* maximum size of stack */ + ClientData space[5]; /* initial space for stack data */ +} Itcl_Stack; + +#define Itcl_GetStackSize(stackPtr) ((stackPtr)->len) + +/* + * Generic linked list. + */ +struct Itcl_List; +typedef struct Itcl_ListElem { + struct Itcl_List* owner; /* list containing this element */ + ClientData value; /* value associated with this element */ + struct Itcl_ListElem *prev; /* previous element in linked list */ + struct Itcl_ListElem *next; /* next element in linked list */ +} Itcl_ListElem; + +typedef struct Itcl_List { + int validate; /* validation stamp */ + int num; /* number of elements */ + struct Itcl_ListElem *head; /* previous element in linked list */ + struct Itcl_ListElem *tail; /* next element in linked list */ +} Itcl_List; + +#define Itcl_FirstListElem(listPtr) ((listPtr)->head) +#define Itcl_LastListElem(listPtr) ((listPtr)->tail) +#define Itcl_NextListElem(elemPtr) ((elemPtr)->next) +#define Itcl_PrevListElem(elemPtr) ((elemPtr)->prev) +#define Itcl_GetListLength(listPtr) ((listPtr)->num) +#define Itcl_GetListValue(elemPtr) ((elemPtr)->value) + +/* + * Token representing the state of an interpreter. + */ +typedef struct Itcl_InterpState_ *Itcl_InterpState; + + +/* + * Exported functions + */ +EXTERN int Itcl_Init _ANSI_ARGS_((Tcl_Interp *interp)); +EXTERN int Itcl_SafeInit _ANSI_ARGS_((Tcl_Interp *interp)); + +EXTERN int Itcl_RegisterC _ANSI_ARGS_((Tcl_Interp *interp, + char *name, Tcl_CmdProc *proc, ClientData clientData, + Tcl_CmdDeleteProc *deleteProc)); +EXTERN int Itcl_RegisterObjC _ANSI_ARGS_((Tcl_Interp *interp, + char *name, Tcl_ObjCmdProc *proc, ClientData clientData, + Tcl_CmdDeleteProc *deleteProc)); +EXTERN int Itcl_FindC _ANSI_ARGS_((Tcl_Interp *interp, char *name, + Tcl_CmdProc **argProcPtr, Tcl_ObjCmdProc **objProcPtr, + ClientData *cDataPtr)); + +EXTERN void Itcl_InitStack _ANSI_ARGS_((Itcl_Stack *stack)); +EXTERN void Itcl_DeleteStack _ANSI_ARGS_((Itcl_Stack *stack)); +EXTERN void Itcl_PushStack _ANSI_ARGS_((ClientData cdata, + Itcl_Stack *stack)); +EXTERN ClientData Itcl_PopStack _ANSI_ARGS_((Itcl_Stack *stack)); +EXTERN ClientData Itcl_PeekStack _ANSI_ARGS_((Itcl_Stack *stack)); +EXTERN ClientData Itcl_GetStackValue _ANSI_ARGS_((Itcl_Stack *stack, + int pos)); + +EXTERN void Itcl_InitList _ANSI_ARGS_((Itcl_List *listPtr)); +EXTERN void Itcl_DeleteList _ANSI_ARGS_((Itcl_List *listPtr)); +EXTERN Itcl_ListElem* Itcl_CreateListElem _ANSI_ARGS_((Itcl_List *listPtr)); +EXTERN Itcl_ListElem* Itcl_DeleteListElem _ANSI_ARGS_((Itcl_ListElem *elemPtr)); +EXTERN Itcl_ListElem* Itcl_InsertList _ANSI_ARGS_((Itcl_List *listPtr, + ClientData val)); +EXTERN Itcl_ListElem* Itcl_InsertListElem _ANSI_ARGS_((Itcl_ListElem *pos, + ClientData val)); +EXTERN Itcl_ListElem* Itcl_AppendList _ANSI_ARGS_((Itcl_List *listPtr, + ClientData val)); +EXTERN Itcl_ListElem* Itcl_AppendListElem _ANSI_ARGS_((Itcl_ListElem *pos, + ClientData val)); +EXTERN void Itcl_SetListValue _ANSI_ARGS_((Itcl_ListElem *elemPtr, + ClientData val)); + +EXTERN void Itcl_EventuallyFree _ANSI_ARGS_((ClientData cdata, + Tcl_FreeProc *fproc)); +EXTERN void Itcl_PreserveData _ANSI_ARGS_((ClientData cdata)); +EXTERN void Itcl_ReleaseData _ANSI_ARGS_((ClientData cdata)); + +EXTERN Itcl_InterpState Itcl_SaveInterpState _ANSI_ARGS_((Tcl_Interp* interp, + int status)); +EXTERN int Itcl_RestoreInterpState _ANSI_ARGS_((Tcl_Interp* interp, + Itcl_InterpState state)); +EXTERN void Itcl_DiscardInterpState _ANSI_ARGS_((Itcl_InterpState state)); + +#endif /* RESOURCE_INCLUDED */ + +#undef TCL_STORAGE_CLASS +#define TCL_STORAGE_CLASS DLLIMPORT + +#endif /* ITCL_H */ diff --git a/itcl/itcl/generic/itclInt.h b/itcl/itcl/generic/itclInt.h new file mode 100644 index 00000000000..9ca1323dab0 --- /dev/null +++ b/itcl/itcl/generic/itclInt.h @@ -0,0 +1,535 @@ +/* + * ------------------------------------------------------------------------ + * PACKAGE: [incr Tcl] + * DESCRIPTION: Object-Oriented Extensions to Tcl + * + * [incr Tcl] provides object-oriented extensions to Tcl, much as + * C++ provides object-oriented extensions to C. It provides a means + * of encapsulating related procedures together with their shared data + * in a local namespace that is hidden from the outside world. It + * promotes code re-use through inheritance. More than anything else, + * it encourages better organization of Tcl applications through the + * object-oriented paradigm, leading to code that is easier to + * understand and maintain. + * + * ADDING [incr Tcl] TO A Tcl-BASED APPLICATION: + * + * To add [incr Tcl] facilities to a Tcl application, modify the + * Tcl_AppInit() routine as follows: + * + * 1) Include this header file near the top of the file containing + * Tcl_AppInit(): + * + * #include "itcl.h" + * + * 2) Within the body of Tcl_AppInit(), add the following lines: + * + * if (Itcl_Init(interp) == TCL_ERROR) { + * return TCL_ERROR; + * } + * + * 3) Link your application with libitcl.a + * + * NOTE: An example file "tclAppInit.c" containing the changes shown + * above is included in this distribution. + * + * ======================================================================== + * AUTHOR: Michael J. McLennan + * Bell Labs Innovations for Lucent Technologies + * mmclennan@lucent.com + * http://www.tcltk.com/itcl + * + * RCS: $Id$ + * ======================================================================== + * Copyright (c) 1993-1998 Lucent Technologies, Inc. + * ------------------------------------------------------------------------ + * See the file "license.terms" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + */ +#ifndef ITCLINT_H +#define ITCLINT_H + +#include "itcl.h" +#include "tclInt.h" + +#ifdef BUILD_itcl +# undef TCL_STORAGE_CLASS +# define TCL_STORAGE_CLASS DLLEXPORT +#endif + +/* + * Since the Tcl/Tk distribution doesn't perform any asserts, + * dynamic loading can fail to find the __assert function. + * As a workaround, we'll include our own. + */ +#undef assert +#ifdef NDEBUG +#define assert(EX) ((void)0) +#else +EXTERN void Itcl_Assert _ANSI_ARGS_((char *testExpr, char *fileName, int lineNum) +); +#if defined(__STDC__) +#define assert(EX) (void)((EX) || (Itcl_Assert(#EX, __FILE__, __LINE__), 0)) +#else +#define assert(EX) (void)((EX) || (Itcl_Assert("EX", __FILE__, __LINE__), 0)) +#endif /* __STDC__ */ +#endif /* NDEBUG */ + + +/* + * Common info for managing all known objects. + * Each interpreter has one of these data structures stored as + * clientData in the "itcl" namespace. It is also accessible + * as associated data via the key ITCL_INTERP_DATA. + */ +struct ItclObject; +typedef struct ItclObjectInfo { + Tcl_Interp *interp; /* interpreter that manages this info */ + Tcl_HashTable objects; /* list of all known objects */ + + Itcl_Stack transparentFrames; /* stack of call frames that should be + * treated transparently. When + * Itcl_EvalMemberCode is invoked in + * one of these contexts, it does an + * "uplevel" to get past the transparent + * frame and back to the calling context. */ + Tcl_HashTable contextFrames; /* object contexts for active call frames */ + + int protection; /* protection level currently in effect */ + + Itcl_Stack cdefnStack; /* stack of class definitions currently + * being parsed */ +} ItclObjectInfo; + +#define ITCL_INTERP_DATA "itcl_data" + +/* + * Representation for each [incr Tcl] class. + */ +typedef struct ItclClass { + char *name; /* class name */ + char *fullname; /* fully qualified class name */ + Tcl_Interp *interp; /* interpreter that manages this info */ + Tcl_Namespace *namesp; /* namespace representing class scope */ + Tcl_Command accessCmd; /* access command for creating instances */ + + struct ItclObjectInfo *info; /* info about all known objects */ + Itcl_List bases; /* list of base classes */ + Itcl_List derived; /* list of all derived classes */ + Tcl_HashTable heritage; /* table of all base classes. Look up + * by pointer to class definition. This + * provides fast lookup for inheritance + * tests. */ + Tcl_Obj *initCode; /* initialization code for new objs */ + Tcl_HashTable variables; /* definitions for all data members + in this class. Look up simple string + names and get back ItclVarDefn* ptrs */ + Tcl_HashTable functions; /* definitions for all member functions + in this class. Look up simple string + names and get back ItclMemberFunc* ptrs */ + int numInstanceVars; /* number of instance vars in variables + table */ + Tcl_HashTable resolveVars; /* all possible names for variables in + * this class (e.g., x, foo::x, etc.) */ + Tcl_HashTable resolveCmds; /* all possible names for functions in + * this class (e.g., x, foo::x, etc.) */ + int unique; /* unique number for #auto generation */ + int flags; /* maintains class status */ +} ItclClass; + +typedef struct ItclHierIter { + ItclClass *current; /* current position in hierarchy */ + Itcl_Stack stack; /* stack used for traversal */ +} ItclHierIter; + +/* + * Representation for each [incr Tcl] object. + */ +typedef struct ItclObject { + ItclClass *classDefn; /* most-specific class */ + Tcl_Command accessCmd; /* object access command */ + + int dataSize; /* number of elements in data array */ + Var** data; /* all object-specific data members */ + Tcl_HashTable* constructed; /* temp storage used during construction */ + Tcl_HashTable* destructed; /* temp storage used during destruction */ +} ItclObject; + +#define ITCL_IGNORE_ERRS 0x002 /* useful for construction/destruction */ + +/* + * Implementation for any code body in an [incr Tcl] class. + */ +typedef struct ItclMemberCode { + int flags; /* flags describing implementation */ + CompiledLocal *arglist; /* list of arg names and initial values */ + int argcount; /* number of args in arglist */ + Proc *procPtr; /* Tcl proc representation (needed to + * handle compiled locals) */ + union { + Tcl_CmdProc *argCmd; /* (argc,argv) C implementation */ + Tcl_ObjCmdProc *objCmd; /* (objc,objv) C implementation */ + } cfunc; + + ClientData clientData; /* client data for C implementations */ + +} ItclMemberCode; + +/* + * Basic representation for class members (commands/variables) + */ +typedef struct ItclMember { + Tcl_Interp* interp; /* interpreter containing the class */ + ItclClass* classDefn; /* class containing this member */ + char* name; /* member name */ + char* fullname; /* member name with "class::" qualifier */ + int protection; /* protection level */ + int flags; /* flags describing member (see below) */ + ItclMemberCode *code; /* code associated with member */ +} ItclMember; + +/* + * Flag bits for ItclMemberCode and ItclMember: + */ +#define ITCL_IMPLEMENT_NONE 0x001 /* no implementation */ +#define ITCL_IMPLEMENT_TCL 0x002 /* Tcl implementation */ +#define ITCL_IMPLEMENT_ARGCMD 0x004 /* (argc,argv) C implementation */ +#define ITCL_IMPLEMENT_OBJCMD 0x008 /* (objc,objv) C implementation */ +#define ITCL_IMPLEMENT_C 0x00c /* either kind of C implementation */ +#define ITCL_CONSTRUCTOR 0x010 /* non-zero => is a constructor */ +#define ITCL_DESTRUCTOR 0x020 /* non-zero => is a destructor */ +#define ITCL_COMMON 0x040 /* non-zero => is a "proc" */ +#define ITCL_ARG_SPEC 0x080 /* non-zero => has an argument spec */ + +#define ITCL_OLD_STYLE 0x100 /* non-zero => old-style method + * (process "config" argument) */ + +#define ITCL_THIS_VAR 0x200 /* non-zero => built-in "this" variable */ + +/* + * Representation of member functions in an [incr Tcl] class. + */ +typedef struct ItclMemberFunc { + ItclMember *member; /* basic member info */ + Tcl_Command accessCmd; /* Tcl command installed for this function */ + CompiledLocal *arglist; /* list of arg names and initial values */ + int argcount; /* number of args in arglist */ +} ItclMemberFunc; + +/* + * Instance variables. + */ +typedef struct ItclVarDefn { + ItclMember *member; /* basic member info */ + char* init; /* initial value */ +} ItclVarDefn; + +/* + * Instance variable lookup entry. + */ +typedef struct ItclVarLookup { + ItclVarDefn* vdefn; /* variable definition */ + int usage; /* number of uses for this record */ + int accessible; /* non-zero => accessible from class with + * this lookup record in its resolveVars */ + char *leastQualName; /* simplist name for this variable, with + * the fewest qualifiers. This string is + * taken from the resolveVars table, so + * it shouldn't be freed. */ + union { + int index; /* index into virtual table (instance data) */ + Tcl_Var common; /* variable (common data) */ + } var; +} ItclVarLookup; + +/* + * Representation for the context in which a body of [incr Tcl] + * code executes. In ordinary Tcl, this is a CallFrame. But for + * [incr Tcl] code bodies, we must be careful to set up the + * CallFrame properly, to plug in instance variables before + * executing the code body. + */ +typedef struct ItclContext { + ItclClass *classDefn; /* class definition */ + CallFrame frame; /* call frame for object context */ + Var *compiledLocals; /* points to storage for compiled locals */ + Var localStorage[20]; /* default storage for compiled locals */ +} ItclContext; + + +/* + * Functions used within the package, but not considered "public" + */ + +EXTERN int Itcl_IsClassNamespace _ANSI_ARGS_((Tcl_Namespace *namesp)); +EXTERN int Itcl_IsClass _ANSI_ARGS_((Tcl_Command cmd)); +EXTERN ItclClass* Itcl_FindClass _ANSI_ARGS_((Tcl_Interp* interp, + char* path, int autoload)); + +EXTERN int Itcl_FindObject _ANSI_ARGS_((Tcl_Interp *interp, + char *name, ItclObject **roPtr)); +EXTERN int Itcl_IsObject _ANSI_ARGS_((Tcl_Command cmd)); +EXTERN int Itcl_ObjectIsa _ANSI_ARGS_((ItclObject *contextObj, + ItclClass *cdefn)); + + +EXTERN int Itcl_Protection _ANSI_ARGS_((Tcl_Interp *interp, + int newLevel)); +EXTERN char* Itcl_ProtectionStr _ANSI_ARGS_((int pLevel)); +EXTERN int Itcl_CanAccess _ANSI_ARGS_((ItclMember* memberPtr, + Tcl_Namespace* fromNsPtr)); +EXTERN int Itcl_CanAccessFunc _ANSI_ARGS_((ItclMemberFunc* mfunc, + Tcl_Namespace* fromNsPtr)); +EXTERN Tcl_Namespace* Itcl_GetTrueNamespace _ANSI_ARGS_((Tcl_Interp *interp, + ItclObjectInfo *info)); + +EXTERN void Itcl_ParseNamespPath _ANSI_ARGS_((char *name, + Tcl_DString *buffer, char **head, char **tail)); +EXTERN int Itcl_DecodeScopedCommand _ANSI_ARGS_((Tcl_Interp *interp, + char *name, Tcl_Namespace **rNsPtr, char **rCmdPtr)); +EXTERN int Itcl_EvalArgs _ANSI_ARGS_((Tcl_Interp *interp, int objc, + Tcl_Obj *CONST objv[])); +EXTERN Tcl_Obj* Itcl_CreateArgs _ANSI_ARGS_((Tcl_Interp *interp, + char *string, int objc, Tcl_Obj *CONST objv[])); + +EXTERN int Itcl_PushContext _ANSI_ARGS_((Tcl_Interp *interp, + ItclMember *member, ItclClass *contextClass, ItclObject *contextObj, + ItclContext *contextPtr)); +EXTERN void Itcl_PopContext _ANSI_ARGS_((Tcl_Interp *interp, + ItclContext *contextPtr)); +EXTERN int Itcl_GetContext _ANSI_ARGS_((Tcl_Interp *interp, + ItclClass **cdefnPtr, ItclObject **odefnPtr)); + +EXTERN void Itcl_InitHierIter _ANSI_ARGS_((ItclHierIter *iter, + ItclClass *cdefn)); +EXTERN void Itcl_DeleteHierIter _ANSI_ARGS_((ItclHierIter *iter)); +EXTERN ItclClass* Itcl_AdvanceHierIter _ANSI_ARGS_((ItclHierIter *iter)); + +EXTERN int Itcl_FindClassesCmd _ANSI_ARGS_((ClientData clientData, + Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); +EXTERN int Itcl_FindObjectsCmd _ANSI_ARGS_((ClientData clientData, + Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); +EXTERN int Itcl_ProtectionCmd _ANSI_ARGS_((ClientData clientData, + Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); +EXTERN int Itcl_DelClassCmd _ANSI_ARGS_((ClientData clientData, + Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); +EXTERN int Itcl_DelObjectCmd _ANSI_ARGS_((ClientData clientData, + Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); +EXTERN int Itcl_ScopeCmd _ANSI_ARGS_((ClientData clientData, + Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); +EXTERN int Itcl_CodeCmd _ANSI_ARGS_((ClientData clientData, + Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); +EXTERN int Itcl_StubCreateCmd _ANSI_ARGS_((ClientData clientData, + Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); +EXTERN int Itcl_StubExistsCmd _ANSI_ARGS_((ClientData clientData, + Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); +EXTERN int Itcl_IsStub _ANSI_ARGS_((Tcl_Command cmd)); + + +/* + * Functions for manipulating classes + */ +EXTERN int Itcl_CreateClass _ANSI_ARGS_((Tcl_Interp* interp, char* path, + ItclObjectInfo *info, ItclClass **rPtr)); +EXTERN int Itcl_DeleteClass _ANSI_ARGS_((Tcl_Interp *interp, + ItclClass *cdefnPtr)); +EXTERN Tcl_Namespace* Itcl_FindClassNamespace _ANSI_ARGS_((Tcl_Interp* interp, + char* path)); +EXTERN int Itcl_HandleClass _ANSI_ARGS_((ClientData clientData, + Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); +EXTERN int Itcl_ClassCmdResolver _ANSI_ARGS_((Tcl_Interp *interp, + char* name, Tcl_Namespace *context, int flags, Tcl_Command *rPtr)); +EXTERN int Itcl_ClassVarResolver _ANSI_ARGS_((Tcl_Interp *interp, + char* name, Tcl_Namespace *context, int flags, Tcl_Var *rPtr)); +EXTERN int Itcl_ClassCompiledVarResolver _ANSI_ARGS_((Tcl_Interp *interp, + char* name, int length, Tcl_Namespace *context, Tcl_ResolvedVarInfo **rPtr)); +EXTERN void Itcl_BuildVirtualTables _ANSI_ARGS_((ItclClass* cdefnPtr)); +EXTERN int Itcl_CreateVarDefn _ANSI_ARGS_((Tcl_Interp *interp, + ItclClass* cdefn, char* name, char* init, char* config, + ItclVarDefn** vdefnPtr)); +EXTERN void Itcl_DeleteVarDefn _ANSI_ARGS_((ItclVarDefn *vdefn)); +EXTERN char* Itcl_GetCommonVar _ANSI_ARGS_((Tcl_Interp *interp, + char *name, ItclClass *contextClass)); +EXTERN ItclMember* Itcl_CreateMember _ANSI_ARGS_((Tcl_Interp* interp, + ItclClass *cdefn, char* name)); +EXTERN void Itcl_DeleteMember _ANSI_ARGS_((ItclMember *memPtr)); + + +/* + * Functions for manipulating objects + */ +EXTERN int Itcl_CreateObject _ANSI_ARGS_((Tcl_Interp *interp, + char* name, ItclClass *cdefn, int objc, Tcl_Obj *CONST objv[], + ItclObject **roPtr)); +EXTERN int Itcl_DeleteObject _ANSI_ARGS_((Tcl_Interp *interp, + ItclObject *contextObj)); +EXTERN int Itcl_DestructObject _ANSI_ARGS_((Tcl_Interp *interp, + ItclObject *contextObj, int flags)); +EXTERN int Itcl_HandleInstance _ANSI_ARGS_((ClientData clientData, + Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); +EXTERN char* Itcl_GetInstanceVar _ANSI_ARGS_((Tcl_Interp *interp, + char *name, ItclObject *contextObj, ItclClass *contextClass)); +EXTERN int Itcl_ScopedVarResolver _ANSI_ARGS_((Tcl_Interp *interp, + char *name, Tcl_Namespace *contextNs, int flags, Tcl_Var *rPtr)); + + +/* + * Functions for manipulating methods and procs + */ +EXTERN int Itcl_BodyCmd _ANSI_ARGS_((ClientData dummy, + Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); +EXTERN int Itcl_ConfigBodyCmd _ANSI_ARGS_((ClientData dummy, + Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); +EXTERN int Itcl_CreateMethod _ANSI_ARGS_((Tcl_Interp* interp, + ItclClass *cdefn, char* name, char* arglist, char* body)); +EXTERN int Itcl_CreateProc _ANSI_ARGS_((Tcl_Interp* interp, + ItclClass *cdefn, char* name, char* arglist, char* body)); +EXTERN int Itcl_CreateMemberFunc _ANSI_ARGS_((Tcl_Interp* interp, + ItclClass *cdefn, char* name, char* arglist, char* body, + ItclMemberFunc** mfuncPtr)); +EXTERN int Itcl_ChangeMemberFunc _ANSI_ARGS_((Tcl_Interp* interp, + ItclMemberFunc* mfunc, char* arglist, char* body)); +EXTERN void Itcl_DeleteMemberFunc _ANSI_ARGS_((char* cdata)); +EXTERN int Itcl_CreateMemberCode _ANSI_ARGS_((Tcl_Interp* interp, + ItclClass *cdefn, char* arglist, char* body, ItclMemberCode** mcodePtr)); +EXTERN void Itcl_DeleteMemberCode _ANSI_ARGS_((char* cdata)); +EXTERN int Itcl_GetMemberCode _ANSI_ARGS_((Tcl_Interp* interp, + ItclMember* member)); +EXTERN int Itcl_CompileMemberCodeBody _ANSI_ARGS_((Tcl_Interp *interp, + ItclMember *member, char *desc, Tcl_Obj *bodyPtr)); +EXTERN int Itcl_EvalMemberCode _ANSI_ARGS_((Tcl_Interp *interp, + ItclMemberFunc *mfunc, ItclMember *member, ItclObject *contextObj, + int objc, Tcl_Obj *CONST objv[])); +EXTERN int Itcl_CreateArgList _ANSI_ARGS_((Tcl_Interp* interp, + char* decl, int* argcPtr, CompiledLocal** argPtr)); +EXTERN CompiledLocal* Itcl_CreateArg _ANSI_ARGS_((char* name, + char* init)); +EXTERN void Itcl_DeleteArgList _ANSI_ARGS_((CompiledLocal *arglist)); +EXTERN Tcl_Obj* Itcl_ArgList _ANSI_ARGS_((int argc, CompiledLocal* arglist)); +EXTERN int Itcl_EquivArgLists _ANSI_ARGS_((CompiledLocal* arg1, int arg1c, + CompiledLocal* arg2, int arg2c)); +EXTERN void Itcl_GetMemberFuncUsage _ANSI_ARGS_((ItclMemberFunc *mfunc, + ItclObject *contextObj, Tcl_Obj *objPtr)); +EXTERN int Itcl_ExecMethod _ANSI_ARGS_((ClientData clientData, + Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); +EXTERN int Itcl_ExecProc _ANSI_ARGS_((ClientData clientData, + Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); +EXTERN int Itcl_AssignArgs _ANSI_ARGS_((Tcl_Interp *interp, + int objc, Tcl_Obj *CONST objv[], ItclMemberFunc *mfunc)); +EXTERN int Itcl_ConstructBase _ANSI_ARGS_((Tcl_Interp *interp, + ItclObject *contextObj, ItclClass *contextClass)); +EXTERN int Itcl_InvokeMethodIfExists _ANSI_ARGS_((Tcl_Interp *interp, + char *name, ItclClass *contextClass, ItclObject *contextObj, + int objc, Tcl_Obj *CONST objv[])); +EXTERN int Itcl_EvalBody _ANSI_ARGS_((Tcl_Interp *interp, + Tcl_Obj *bodyPtr)); +EXTERN int Itcl_ReportFuncErrors _ANSI_ARGS_((Tcl_Interp* interp, + ItclMemberFunc *mfunc, ItclObject *contextObj, int result)); + + +/* + * Commands for parsing class definitions + */ +EXTERN int Itcl_ParseInit _ANSI_ARGS_((Tcl_Interp *interp, + ItclObjectInfo *info)); +EXTERN int Itcl_ClassCmd _ANSI_ARGS_((ClientData clientData, + Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); +EXTERN int Itcl_ClassInheritCmd _ANSI_ARGS_((ClientData clientData, + Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); +EXTERN int Itcl_ClassProtectionCmd _ANSI_ARGS_((ClientData clientData, + Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); +EXTERN int Itcl_ClassConstructorCmd _ANSI_ARGS_((ClientData clientData, + Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); +EXTERN int Itcl_ClassDestructorCmd _ANSI_ARGS_((ClientData clientData, + Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); +EXTERN int Itcl_ClassMethodCmd _ANSI_ARGS_((ClientData clientData, + Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); +EXTERN int Itcl_ClassProcCmd _ANSI_ARGS_((ClientData clientData, + Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); +EXTERN int Itcl_ClassVariableCmd _ANSI_ARGS_((ClientData clientData, + Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); +EXTERN int Itcl_ClassCommonCmd _ANSI_ARGS_((ClientData clientData, + Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); +EXTERN int Itcl_ParseVarResolver _ANSI_ARGS_((Tcl_Interp *interp, + char* name, Tcl_Namespace *contextNs, int flags, Tcl_Var* rPtr)); + + +/* + * Commands in the "builtin" namespace + */ +EXTERN int Itcl_BiInit _ANSI_ARGS_((Tcl_Interp *interp)); +EXTERN int Itcl_InstallBiMethods _ANSI_ARGS_((Tcl_Interp *interp, + ItclClass *cdefn)); +EXTERN int Itcl_BiIsaCmd _ANSI_ARGS_((ClientData clientData, + Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); +EXTERN int Itcl_BiConfigureCmd _ANSI_ARGS_((ClientData clientData, + Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); +EXTERN int Itcl_BiCgetCmd _ANSI_ARGS_((ClientData clientData, + Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); +EXTERN int Itcl_BiChainCmd _ANSI_ARGS_((ClientData dummy, + Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); +EXTERN int Itcl_BiInfoClassCmd _ANSI_ARGS_((ClientData dummy, + Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); +EXTERN int Itcl_BiInfoInheritCmd _ANSI_ARGS_((ClientData dummy, + Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); +EXTERN int Itcl_BiInfoHeritageCmd _ANSI_ARGS_((ClientData dummy, + Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); +EXTERN int Itcl_BiInfoFunctionCmd _ANSI_ARGS_((ClientData dummy, + Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); +EXTERN int Itcl_BiInfoVariableCmd _ANSI_ARGS_((ClientData dummy, + Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); +EXTERN int Itcl_BiInfoBodyCmd _ANSI_ARGS_((ClientData dummy, + Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); +EXTERN int Itcl_BiInfoArgsCmd _ANSI_ARGS_((ClientData dummy, + Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); +EXTERN int Itcl_DefaultInfoCmd _ANSI_ARGS_((ClientData dummy, + Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); + + +/* + * Ensembles + */ +EXTERN int Itcl_EnsembleInit _ANSI_ARGS_((Tcl_Interp *interp)); +EXTERN int Itcl_CreateEnsemble _ANSI_ARGS_((Tcl_Interp *interp, + char* ensName)); +EXTERN int Itcl_AddEnsemblePart _ANSI_ARGS_((Tcl_Interp *interp, + char* ensName, char* partName, char* usageInfo, + Tcl_ObjCmdProc *objProc, ClientData clientData, + Tcl_CmdDeleteProc *deleteProc)); +EXTERN int Itcl_GetEnsemblePart _ANSI_ARGS_((Tcl_Interp *interp, + char *ensName, char *partName, Tcl_CmdInfo *infoPtr)); +EXTERN int Itcl_IsEnsemble _ANSI_ARGS_((Tcl_CmdInfo* infoPtr)); +EXTERN int Itcl_GetEnsembleUsage _ANSI_ARGS_((Tcl_Interp *interp, + char *ensName, Tcl_Obj *objPtr)); +EXTERN int Itcl_GetEnsembleUsageForObj _ANSI_ARGS_((Tcl_Interp *interp, + Tcl_Obj *ensObjPtr, Tcl_Obj *objPtr)); +EXTERN int Itcl_EnsembleCmd _ANSI_ARGS_((ClientData clientData, + Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); +EXTERN int Itcl_EnsPartCmd _ANSI_ARGS_((ClientData clientData, + Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); +EXTERN int Itcl_EnsembleErrorCmd _ANSI_ARGS_((ClientData clientData, + Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); + + +/* + * Commands provided for backward compatibility + */ +EXTERN int Itcl_OldInit _ANSI_ARGS_((Tcl_Interp* interp, + ItclObjectInfo* info)); +EXTERN int Itcl_InstallOldBiMethods _ANSI_ARGS_((Tcl_Interp *interp, + ItclClass *cdefn)); + + +/* + * Things that should be in the Tcl core. + */ +EXTERN Tcl_CallFrame* _Tcl_GetCallFrame _ANSI_ARGS_((Tcl_Interp *interp, + int level)); +EXTERN Tcl_CallFrame* _Tcl_ActivateCallFrame _ANSI_ARGS_((Tcl_Interp *interp, + Tcl_CallFrame *framePtr)); +EXTERN Var* _TclNewVar _ANSI_ARGS_((void)); + +#undef TCL_STORAGE_CLASS +#define TCL_STORAGE_CLASS DLLIMPORT + +#endif /* ITCLINT_H */ diff --git a/itcl/itcl/generic/itcl_bicmds.c b/itcl/itcl/generic/itcl_bicmds.c new file mode 100644 index 00000000000..d9319a4b4e9 --- /dev/null +++ b/itcl/itcl/generic/itcl_bicmds.c @@ -0,0 +1,1695 @@ +/* + * ------------------------------------------------------------------------ + * PACKAGE: [incr Tcl] + * DESCRIPTION: Object-Oriented Extensions to Tcl + * + * [incr Tcl] provides object-oriented extensions to Tcl, much as + * C++ provides object-oriented extensions to C. It provides a means + * of encapsulating related procedures together with their shared data + * in a local namespace that is hidden from the outside world. It + * promotes code re-use through inheritance. More than anything else, + * it encourages better organization of Tcl applications through the + * object-oriented paradigm, leading to code that is easier to + * understand and maintain. + * + * These procedures handle built-in class methods, including the + * "isa" method (to query hierarchy info) and the "info" method + * (to query class/object data). + * + * ======================================================================== + * AUTHOR: Michael J. McLennan + * Bell Labs Innovations for Lucent Technologies + * mmclennan@lucent.com + * http://www.tcltk.com/itcl + * + * RCS: $Id$ + * ======================================================================== + * Copyright (c) 1993-1998 Lucent Technologies, Inc. + * ------------------------------------------------------------------------ + * See the file "license.terms" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + */ +#include "itclInt.h" + +/* + * Standard list of built-in methods for all objects. + */ +typedef struct BiMethod { + char* name; /* method name */ + char* usage; /* string describing usage */ + char* registration; /* registration name for C proc */ + Tcl_ObjCmdProc *proc; /* implementation C proc */ +} BiMethod; + +static BiMethod BiMethodList[] = { + { "cget", "-option", + "@itcl-builtin-cget", Itcl_BiCgetCmd }, + { "configure", "?-option? ?value -option value...?", + "@itcl-builtin-configure", Itcl_BiConfigureCmd }, + { "isa", "className", + "@itcl-builtin-isa", Itcl_BiIsaCmd }, +}; +static int BiMethodListLen = sizeof(BiMethodList)/sizeof(BiMethod); + + +/* + * FORWARD DECLARATIONS + */ +static Tcl_Obj* ItclReportPublicOpt _ANSI_ARGS_((Tcl_Interp *interp, + ItclVarDefn *vdefn, ItclObject *contextObj)); + + +/* + * ------------------------------------------------------------------------ + * Itcl_BiInit() + * + * Creates a namespace full of built-in methods/procs for [incr Tcl] + * classes. This includes things like the "isa" method and "info" + * for querying class info. Usually invoked by Itcl_Init() when + * [incr Tcl] is first installed into an interpreter. + * + * Returns TCL_OK/TCL_ERROR to indicate success/failure. + * ------------------------------------------------------------------------ + */ +int +Itcl_BiInit(interp) + Tcl_Interp *interp; /* current interpreter */ +{ + int i; + Tcl_Namespace *itclBiNs; + + /* + * Declare all of the built-in methods as C procedures. + */ + for (i=0; i < BiMethodListLen; i++) { + if (Itcl_RegisterObjC(interp, + BiMethodList[i].registration+1, BiMethodList[i].proc, + (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL) != TCL_OK) { + + return TCL_ERROR; + } + } + + /* + * Create the "::itcl::builtin" namespace for built-in class + * commands. These commands are imported into each class + * just before the class definition is parsed. + */ + Tcl_CreateObjCommand(interp, "::itcl::builtin::chain", Itcl_BiChainCmd, + (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL); + + if (Itcl_CreateEnsemble(interp, "::itcl::builtin::info") != TCL_OK) { + return TCL_ERROR; + } + + if (Itcl_AddEnsemblePart(interp, "::itcl::builtin::info", + "class", "", + Itcl_BiInfoClassCmd, (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL) + != TCL_OK || + Itcl_AddEnsemblePart(interp, "::itcl::builtin::info", + "inherit", "", + Itcl_BiInfoInheritCmd, (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL) + != TCL_OK || + Itcl_AddEnsemblePart(interp, "::itcl::builtin::info", + "heritage", "", + Itcl_BiInfoHeritageCmd, (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL) + != TCL_OK || + Itcl_AddEnsemblePart(interp, "::itcl::builtin::info", + "function", "?name? ?-protection? ?-type? ?-name? ?-args? ?-body?", + Itcl_BiInfoFunctionCmd, (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL) + != TCL_OK || + Itcl_AddEnsemblePart(interp, "::itcl::builtin::info", + "variable", "?name? ?-protection? ?-type? ?-name? ?-init? ?-value? ?-config?", + Itcl_BiInfoVariableCmd, (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL) + != TCL_OK || + Itcl_AddEnsemblePart(interp, "::itcl::builtin::info", + "args", "procname", + Itcl_BiInfoArgsCmd, (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL) + != TCL_OK || + Itcl_AddEnsemblePart(interp, "::itcl::builtin::info", + "body", "procname", + Itcl_BiInfoBodyCmd, (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL) + != TCL_OK + ) { + return TCL_ERROR; + } + + /* + * Add an error handler to support all of the usual inquiries + * for the "info" command in the global namespace. + */ + if (Itcl_AddEnsemblePart(interp, "::itcl::builtin::info", + "@error", "", + Itcl_DefaultInfoCmd, (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL) + != TCL_OK + ) { + return TCL_ERROR; + } + + /* + * Export all commands in the built-in namespace so we can + * import them later on. + */ + itclBiNs = Tcl_FindNamespace(interp, "::itcl::builtin", + (Tcl_Namespace*)NULL, TCL_LEAVE_ERR_MSG); + + if (!itclBiNs || + Tcl_Export(interp, itclBiNs, "*", /* resetListFirst */ 1) != TCL_OK) { + return TCL_ERROR; + } + + return TCL_OK; +} + + +/* + * ------------------------------------------------------------------------ + * Itcl_InstallBiMethods() + * + * Invoked when a class is first created, just after the class + * definition has been parsed, to add definitions for built-in + * methods to the class. If a method already exists in the class + * with the same name as the built-in, then the built-in is skipped. + * Otherwise, a method definition for the built-in method is added. + * + * Returns TCL_OK if successful, or TCL_ERROR (along with an error + * message in the interpreter) if anything goes wrong. + * ------------------------------------------------------------------------ + */ +int +Itcl_InstallBiMethods(interp, cdefn) + Tcl_Interp *interp; /* current interpreter */ + ItclClass *cdefn; /* class definition to be updated */ +{ + int result = TCL_OK; + Tcl_HashEntry *entry = NULL; + + int i; + ItclHierIter hier; + ItclClass *cdPtr; + + /* + * Scan through all of the built-in methods and see if + * that method already exists in the class. If not, add + * it in. + * + * TRICKY NOTE: The virtual tables haven't been built yet, + * so look for existing methods the hard way--by scanning + * through all classes. + */ + for (i=0; i < BiMethodListLen; i++) { + Itcl_InitHierIter(&hier, cdefn); + cdPtr = Itcl_AdvanceHierIter(&hier); + while (cdPtr) { + entry = Tcl_FindHashEntry(&cdPtr->functions, BiMethodList[i].name); + if (entry) { + break; + } + cdPtr = Itcl_AdvanceHierIter(&hier); + } + Itcl_DeleteHierIter(&hier); + + if (!entry) { + result = Itcl_CreateMethod(interp, cdefn, BiMethodList[i].name, + BiMethodList[i].usage, BiMethodList[i].registration); + + if (result != TCL_OK) { + break; + } + } + } + return result; +} + + +/* + * ------------------------------------------------------------------------ + * Itcl_BiIsaCmd() + * + * Invoked whenever the user issues the "isa" method for an object. + * Handles the following syntax: + * + * isa + * + * Checks to see if the object has the given anywhere + * in its heritage. Returns 1 if so, and 0 otherwise. + * ------------------------------------------------------------------------ + */ +/* ARGSUSED */ +int +Itcl_BiIsaCmd(clientData, interp, objc, objv) + ClientData clientData; /* class definition */ + Tcl_Interp *interp; /* current interpreter */ + int objc; /* number of arguments */ + Tcl_Obj *CONST objv[]; /* argument objects */ +{ + ItclClass *contextClass, *cdefn; + ItclObject *contextObj; + char *token; + + /* + * Make sure that this command is being invoked in the proper + * context. + */ + if (Itcl_GetContext(interp, &contextClass, &contextObj) != TCL_OK) { + return TCL_ERROR; + } + + if (!contextObj) { + Tcl_AppendStringsToObj(Tcl_GetObjResult(interp), + "improper usage: should be \"object isa className\"", + (char*)NULL); + return TCL_ERROR; + } + if (objc != 2) { + token = Tcl_GetStringFromObj(objv[0], (int*)NULL); + Tcl_AppendStringsToObj(Tcl_GetObjResult(interp), + "wrong # args: should be \"object ", token, " className\"", + (char*)NULL); + return TCL_ERROR; + } + + /* + * Look for the requested class. If it is not found, then + * try to autoload it. If it absolutely cannot be found, + * signal an error. + */ + token = Tcl_GetStringFromObj(objv[1], (int*)NULL); + cdefn = Itcl_FindClass(interp, token, /* autoload */ 1); + if (cdefn == NULL) { + return TCL_ERROR; + } + + if (Itcl_ObjectIsa(contextObj, cdefn)) { + Tcl_SetIntObj(Tcl_GetObjResult(interp), 1); + } else { + Tcl_SetIntObj(Tcl_GetObjResult(interp), 0); + } + return TCL_OK; +} + + +/* + * ------------------------------------------------------------------------ + * Itcl_BiConfigureCmd() + * + * Invoked whenever the user issues the "configure" method for an object. + * Handles the following syntax: + * + * configure ?-