Listing 6

#########################################
define setlen
  set $setlen = $arg0.t.node_count
end

document setlen
Set the variable $setlen to the length of the set
end

#########################################
define psetlen
  setlen $arg0
  output $setlen
  echo \n
end

document psetlen
Print the length of a set
end

#########################################
# support functions to navigate through nodes
# parent 4
# left 8
# right 12
# value 16
set $cParentOffset = 4
set $cLeftOffset   = 8
set $cRightOffset  = 12
set $cValueOffset  = 16

# definitions of setleft, setright, setparent
# setbegin, setend, setminimum and setnext
# are left out to save space

#########################################
define pset
  setbegin $arg0
  set $setloop = $setbegin
  setend $arg0
  while ($setloop != $setend)
    output ($arg1 &)($setloop + $cValueOffset)
    echo \n
    setnext $setloop
    set $setloop = $setnext
  end
end

document pset
pset varname type
Print the elements of a set varname
example:
13  set<int> l_set;
14  l_set.insert(3);
15  l_set.insert(4);
(gdb) pset l_set int
3
4
end