Posted to tcl by dgp at Wed Jul 06 15:36:37 GMT 2011view pretty

package require Itcl 3.4
eval {
    itcl::class test_chain_a {
        constructor {args} {
            eval chain $args
        } {
            global ::test_chain_status
            lappend test_chain_status "a::constructor $args"
        }
    }
    itcl::class test_chain_b {
        constructor {args} {
            eval chain $args
        } {
            global ::test_chain_status
            lappend test_chain_status "b::constructor $args"
        }
    }
    itcl::class test_chain_c {
        inherit test_chain_a test_chain_b
        constructor {args} {
            eval chain $args
        } {
            global ::test_chain_status
            lappend test_chain_status "c::constructor $args"
        }
    }
    itcl::class test_chain_d {
        inherit test_chain_c
        constructor {args} {
            eval chain $args
        } {
            global ::test_chain_status
            lappend test_chain_status "d::constructor $args"
        }
    }
}
test_chain_d #auto 1 2 3
test_chain_c #auto 4 5 6