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]
}
}