proc addModel { phone subTree feature refN dimN type cbs dss tree } { # compose default names # --------------------- set dsname $phone-$subTree set question 0=$phone set cbname $phone-$subTree set root ROOT-$subTree # Create new codebook $cbname in codebook set $cbs and # create new distribution $dsname in distribution set $dss # -------------------------------------------------------- if {[$cbs index $cbname] < 0} { $cbs add $cbname $feature $refN $dimN $type } if {[$dss index $dsname] < 0} { $dss add $dsname $cbname } # compose name of hook node (question node) and the attached leaf node # -------------------------------------------------------------------- set qnode hook-$dsname set lnode $dsname # if the requested root in the tree does not yet exist, create it, # then add the new node (hook and leaf) by traversing all no-successors # --------------------------------------------------------------------- if {[$tree index $root] < 0} { $tree add $root {} $qnode $qnode $qnode "-" $tree add $qnode $question - $lnode - - $tree add $lnode {} - - - $dsname } else { $tree add $qnode $question - $lnode - - $tree add $lnode {} - - - $dsname # Find last NO node starting at root set lidx [$tree index $root] set idx $lidx while { [set idx [$tree.item($lidx) configure -no]] > -1} { set lidx $idx } $tree.item($lidx) configure -no [$tree index $qnode] } }