![]() | |
Paradigm | multi-paradigm: object-oriented, functional, Imperative, event-driven programming |
---|---|
Designed by | Michael McLennan |
Developer | Michael McLennan |
First appeared | 1993 |
Stable release | Itcl4.1.1
/ 21 December 2017 |
Typing discipline | dynamic typing, everything can be treated as a string |
Website | itcl at SourceForge |
Influenced by | |
Tcl, C++ |
incr Tcl (commonly stylised as [incr Tcl], and often abbreviated to itcl) is a set of object-oriented extensions for the Tcl programming language. It is widely used among the Tcl community, and is generally regarded as industrial strength [citation needed]. Its name is a pun on "C++". Itcl implementations exist as both a package that may be dynamically loaded by a Tcl application, as well as an independent standalone language with its own interpreter.
Itcl allows namespaces to be used for organizing commands and variables.
Example:
package require Itcl
itcl::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
}
}
itcl::class SmartToaster {
inherit Toaster
method toast {nslices} {
if {$crumbs > 40} {
clean
}
return [chain $nslices]
}
}
set toaster [SmartToaster #auto]
$toaster toast 2
Itcl (like Tcl) has built-in support for the integration of C code into Itcl classes.
Itcl follows the same copyright restrictions as Tcl/Tk. You can use, copy, modify and even redistribute this software without any written agreement or royalty, provided that you keep all copyright notices intact. You cannot claim ownership of the software; the authors and their institutions retain ownership, as described in the "license.terms" files included in the standard distribution. For more information please see incrtcl.sourceforge.net/itcl/copyright.html.