# Varobj Tests (C language)
# Copyright 1998, 2001, 2003 Red Hat, Inc.
#
# This Program Is Free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

# Please email any bugs, comments, and/or additions to this file to:
# insight@sources.redhat.com

# This file was written by Keith Seitz (keiths@cygnus.com)

# Read in the standard defs file
if {![gdbtk_read_defs]} {
  break
}

global objdir test_ran

# Load in a file
set program [file join $objdir c_variable]
if {[catch {gdbtk_test_file $program} t]} {
  # This isn't a test case, since if this fails, we're hosed.
  gdbtk_test_error "loading \"$program\": $t"
}

# The variables that are created are stored in an array called "var".

# proc to tell us which of the variables are changed/out of scope
proc check_update {} {
  global var

  set out {}
  set changed {}
  foreach ind [array names var] {
    set ret [$var($ind) update]
    if {$ret == -1} {
	lappend out $ind
    } elseif {$ret != ""} {
        lappend changed $ret
    }
  }
  return [list $changed $out]
}

# proc to create a variable
proc create_variable {expr} {
  global var

  set err [catch {gdb_variable create "$expr" -expr $expr} v]
  if {!$err} {
    set var($expr) $v
  }

  return $err
}

# proc to get the children
# Children are stored in the global "var" as
# PARENT.child. So for struct _foo {int a; int b} bar;,
# the children returned are {a b} and var(bar.a) and var(bar.b)
# map the actual objects to their names.
proc get_children {parent} {
  global var

  set kiddies [$var($parent) children]
  set children {}
  foreach child $kiddies {
    set name [lindex [split $child .] end]
    lappend children $name
    set var($parent.$name) $child
  }

  return $children
}

proc delete_variable {varname} {
  global var

  if {[info exists var($varname)]} {
    # This has to be caught, since deleting a parent
    # will erase all children.
    $var($varname) delete
    set vars [array names var $varname*]
    foreach v $vars {
      if {[info exists var($v)]} {
	unset var($v)
      }
    }
  }
}

# Compare the values of variable V in format FMT
# with gdb's value.
proc value {v fmt} {
  global var
  global _test

  set value [$var($v) value]
  set gdb [gdb_cmd "output/$fmt $v"]
  if {$value == $gdb} {
    set result ok
  } else {
    set result $v
    puts $_test(logfile) "output/$fmt $v"
    puts $_test(logfile) "gdbtk: $value <> gdb: $gdb"
  }

  return $result
}

proc delete_all_variables {} {
  global var

  foreach variable [array names var] {
    delete_variable $variable
  }
}

proc editable_variables {} {
  global var

  set yes {}
  set no {}
  foreach name [array names var] {
    if {[$var($name) editable]} {
      lappend yes $name
    } else {
      lappend no $name
    }
  }

  return [list $yes $no]
}


#####                   #####
#                           #
#  Variable Creation tests  #
#                           #
#####                   #####

# Test:  c_variable-1.1
# Desc:  Create global variable
gdbtk_test c_variable-1.1 {create global variable} {
  create_variable global_simple
} {0}

# Test: c_variable-1.2
# Desc: Create non-existent variable
gdbtk_test c_variable-1.2 {create non-existent variable} {
  create_variable bogus_unknown_variable
} {1}

# Test: c_variable-1.3
# Desc: Create out of scope variable
gdbtk_test c_variable-1.3 {create out of scope variable} {
  create_variable argc
} {1}

# Break in main and run
gdb_cmd "break do_locals_tests"
gdbtk_test_run

# Test: c_variable-1.4
# Desc: create local variables
gdbtk_test c_variable-1.4 {create local variables} {
  set results {}
  foreach v {linteger lpinteger lcharacter lpcharacter llong lplong lfloat lpfloat ldouble lpdouble lsimple lpsimple func} {
    lappend results [create_variable $v]
  }
  set results
} {0 0 0 0 0 0 0 0 0 0 0 0 0}

# Test: c_variable-1.5
# Desc: create lsimple.character
gdbtk_test c_variable-1.5 {create lsimple.character} {
  create_variable lsimple.character
} {0}

# Test: c_variable-1.6
# Desc: create lpsimple->integer
gdbtk_test c_variable-1.6 {create lpsimple->integer} {
  create_variable lpsimple->integer
} {0}

# Test: c_variable-1.7
# Desc: create lsimple.integer
gdbtk_test c_variable-1.7 {create lsimple.integer} {
  create_variable lsimple.integer
} {0}

# Test: c_variable-1.8
# Desc: names of editable variables
gdbtk_test c_variable-1.8 {names of editable variables} {
  editable_variables
} {{lsimple.character lsimple.integer lpsimple lcharacter lpcharacter linteger lpinteger lfloat lpfloat func llong lplong lpsimple->integer ldouble lpdouble} {lsimple global_simple}}

# Test: c_variable-1.9
# Desc: create type name
#    Type names (like int, long, etc..) are all proper expressions to gdb.
#    make sure variable code does not allow users to create variables, though.
gdbtk_test c_variable-1.9 {create type name} {
  create_variable int
} {1}

#####             #####
#                     #
# Value changed tests #
#                     #
#####             #####

# Test: c_variable-2.1
# Desc: check whether values changed at do_block_tests
gdbtk_test c_variable-2.1 {check whether values changed at do_block_tests} {
  check_update
} {{} {}}

# Step over "linteger = 1234;"
gdb_cmd "step"

# Test: c_variable-2.2
# Desc: check whether only linteger changed values
gdbtk_test c_variable-2.2 {check whether only linteger changed values} {
  check_update
} {linteger {}}

# Step over "lpinteger = &linteger;"
gdb_cmd "step"

# Test: c_variable-2.3
# Desc: check whether only lpinteger changed
gdbtk_test c_variable-2.3 {check whether only lpinteger changed} {
  check_update
} {lpinteger {}}

# Step over "lcharacter = 'a';"
gdb_cmd "step"

# Test: c_variable-2.4
# Desc: check whether only lcharacter changed
gdbtk_test c_variable-2.4 {check whether only lcharacter changed} {
  check_update
} {lcharacter {}}

# Step over "lpcharacter = &lcharacter;"
gdb_cmd "step"

# Test: c_variable-2.5
# Desc: check whether only lpcharacter changed
gdbtk_test c_variable-2.5 {check whether only lpcharacter changed} {
  check_update
} {lpcharacter {}}

# Step over:
#  llong = 2121L;
#  lplong = &llong;
#  lfloat = 2.1;
#  lpfloat = &lfloat;
#  ldouble = 2.718281828459045;
#  lpdouble = &ldouble;
#  lsimple.integer = 1234;
#  lsimple.unsigned_integer = 255;
#  lsimple.character = 'a';
for {set i 0} {$i < 9} {incr i} {
  gdb_cmd "step"
}

# Test: c_variable-2.6
# Desc: check whether llong, lplong, lfloat, lpfloat, ldouble, lpdouble, lsimple.integer,
#       lsimple.unsigned_character lsimple.integer lsimple.character changed
gdbtk_test c_variable-2.6 {check whether llong -- lsimple.character changed} {
  check_update
} {{lsimple.character lsimple.integer lfloat lpfloat llong lplong ldouble lpdouble} {}}

# Step over:
#  lsimple.signed_character = 21;
#  lsimple.char_ptr = &lcharacter;
#  lpsimple = &lsimple;
#  func = nothing;
for {set i 0} {$i < 4} {incr i} {
  gdb_cmd "step"
}

# Test: c_variable-2.7
# Desc: check whether lsimple.signed_character, lsimple.char_ptr, lpsimple, func changed
gdbtk_test c_variable-2.7 {check whether lsimple.signed_character, lsimple.char_ptr, lpsimple, func changed} {
  check_update
} {{lpsimple func lpsimple->integer} {}}

# Step over
#  linteger = 4321;
#  lcharacter = 'b';
#  llong = 1212L;
#  lfloat = 1.2;
#  ldouble = 5.498548281828172;
#  lsimple.integer = 255;
#  lsimple.unsigned_integer = 4321;
#  lsimple.character = 'b';
for {set i 0} {$i < 8} {incr i} {
  gdb_cmd "step"
}

# Test: c_variable-2.8
# Desc: check whether linteger, lcharacter, llong, lfoat, ldouble, lsimple.integer,
#       lpsimple.integer lsimple.character changed
# Note: this test also checks that lpsimple->integer and lsimple.integer have
#       changed (they are the same)
gdbtk_test c_variable-2.8 {check whether linteger -- lsimple.integer changed} {
  check_update
} {{lsimple.character lsimple.integer lcharacter linteger lfloat llong lpsimple->integer ldouble} {}}

gdb_cmd "break subroutine1"
gdb_cmd "continue"

# Test: c_variable-2.9
# Desc: stop in subroutine1
gdbtk_test c_variable-2.9 {stop in subroutine1} {
  lindex [gdb_loc] 1
} {subroutine1}

# Test: c_variable-2.10
# Desc: create variable for locals i,l in subroutine1
gdbtk_test c_variable-2.10 {create variable for locals i,l in subroutine1} {
  set r [create_variable i]
  lappend r [create_variable l]  
} {0 0}

# Test: c_variable-2.11
# Desc: create do_locals_tests local in subroutine1
gdbtk_test c_variable-2.11 {create do_locals_tests local in subroutine1} {
  create_variable linteger
} {1}

# Step over
#  global_simple.integer = i + 3;
gdb_cmd "step"

# Test: c_variable-2.12
# Desc: change global_simple.integer
# Note: This also tests whether we are reporting changes in structs properly.
#       gdb normally would say that global_simple has changed, but we
#       special case that, since it is not what a human expects to see.
gdbtk_test c_variable-2.12 {change global_simple.integer} {
  check_update
} {{} {lsimple.character lsimple.integer lpsimple lsimple lcharacter lpcharacter linteger lpinteger lfloat lpfloat func llong lplong lpsimple->integer ldouble lpdouble}}

# Step over
#  i = 212;
gdb_cmd "step"

# Test: c_variable-2.13
# Desc: change subroutine1 local i
gdbtk_test c_variable-2.13 {change subroutine1 local i} {
  check_update
} {i {lsimple.character lsimple.integer lpsimple lsimple lcharacter lpcharacter linteger lpinteger lfloat lpfloat func llong lplong lpsimple->integer ldouble lpdouble}}

# Step over
#  *l = 12
gdb_cmd "step"

# This test is no longer valid, since varobj now forces
# re-evaluation in the current frame by default.
# Test: c_variable-2.14
# Desc: change do_locals_tests local llong
#gdbtk_test c_variable-2.14 {change do_locals_tests local llong} {
#  check_update
#} {llong {}}

# Leave subroutine1
gdb_cmd "next"

# Test: c_variable-2.15
# Desc: check for out of scope subroutine1 locals
gdbtk_test c_variable-2.15 {check for out of scope subroutine1 locals} {
  lindex [check_update] 1
} {i l}

# Test: c_variable-2.16
# Desc: names of all editable variables
gdbtk_test c_variable-2.16 {names of all editable variables} {
  editable_variables
} {{lsimple.character lsimple.integer lpsimple i lcharacter lpcharacter linteger lpinteger lfloat lpfloat l func llong lplong lpsimple->integer ldouble lpdouble} {lsimple global_simple}}

# Done with locals/globals tests. Erase all variables
delete_all_variables

#####     #####
#             #
# Block tests #
#             #
#####     #####
gdb_cmd "break do_block_tests"
gdb_cmd "continue"

# Test: c_variable-3.1
# Desc: stop in do_block_tests
gdbtk_test c_variable-3.1 {stop in do_block_tests} {
  lindex [gdb_loc] 1
} {do_block_tests}

# Test: c_variable-3.2
# Desc: create cb and foo
gdbtk_test c_variable-3.2 {create cb and foo} {
  set r [create_variable cb]
  lappend r [create_variable foo]
} {0 1}

# step to "foo = 123;"
gdb_cmd "step"

# Be paranoid and assume 3.2 created foo
delete_variable foo

# Test: c_variable-3.3
# Desc: create foo
gdbtk_test c_variable-3.3 {create foo} {
  create_variable foo
} {0}

# step to "foo2 = 123;"
gdb_cmd "step"

# Test: c_variable-3.4
# Desc: check foo, cb changed
gdbtk_test c_variable-3.4 {check foo,cb changed} {
  check_update
} {{foo cb} {}}

# step to "foo = 321;"
gdb_cmd "step"

# Test: c_variable-3.5
# Desc: create inner block foo
gdbtk_test c_variable-3.5 {create inner block foo} {
  global var
  set err [catch {gdb_variable create inner_foo -expr foo} v]
  if {!$err} {
    set var(inner_foo) $v
  }
  
  set err
} {0}

# step to "foo2 = 0;"
gdb_cmd "step"

# Test: c_variable-3.6
# Desc: create foo2
gdbtk_test c_variable-3.6 {create foo2} { 
  create_variable foo2
} {0}

# Test: c_variable-3.7
# Desc: check that outer foo in scope and inner foo out of scope

# Disabled for now because varobjs don't work this way.  If you create a varobj named "foo"
# it will display the correct value for any variable named "foo" in scope. So inner_foo 
# is not out of scope because there is another variable named "foo" in scope. It is
# instead marked as changed.

#gdbtk_test *c_variable-3.7 {check that outer foo in scope and inner foo out of scope} {
#  check_update
#} {{} inner_foo}

delete_variable inner_foo

# step to "foo = 0;"
gdb_cmd "step"

# Test: c_variable-3.8
# Desc: check that foo2 out of scope
gdbtk_test c_variable-3.8 {check that foo2 out of scope} {
  check_update
} {{} foo2}

# step to "cb = 21;"
gdb_cmd "step"

# Test: c_variable-3.9
# Desc: check that only cb is in scope
gdbtk_test c_variable-3.9 {check that only cb is in scope} {
  check_update
} {{} {foo foo2}}

# Test: c_variable-3.10
# Desc: names of editable variables
gdbtk_test c_variable-3.10 {names of editable variables} {
  editable_variables
} {{foo cb foo2} {}}

# Done with block tests
delete_all_variables

#####        #####
#                #
# children tests #
#                #
#####        #####

gdb_cmd "break do_children_tests"
gdb_cmd "continue"

# Test: c_variable-4.1
# Desc: stopped in do_children_tests
gdbtk_test c_variable-4.1 {stopped in do_children_tests} {
  lindex [gdb_loc] 1
} {do_children_tests}

# Test: c_variable-4.2
# Desc: create variable "struct_declarations"
gdbtk_test c_variable-4.2 {create variable "struct_declarations"} {
  create_variable struct_declarations
} {0}

# Test: c_variable-4.3
# Desc: children of struct_declarations
gdbtk_test c_variable-4.3 {children of struct_declarations} {
  get_children  struct_declarations
} {integer character char_ptr long_int int_ptr_ptr long_array func_ptr func_ptr_struct func_ptr_ptr u1 s2}

# Test: c_variable-4.4
# Desc: number of children of struct_declarations
gdbtk_test c_variable-4.4 {number of children of struct_declarations} {
  $var(struct_declarations) numChildren
} {11}

# Test: c_variable-4.5
# Desc: children of struct_declarations.integer
gdbtk_test c_variable-4.5 {children of struct_declarations.integer} {
  get_children struct_declarations.integer
} {}

# Test: c_variable-4.6
# Desc: number of children of struct_declarations.integer
gdbtk_test c_variable-4.6 {number of children of struct_declarations.integer} {
  $var(struct_declarations.integer) numChildren
} {0}

# Test: c_variable-4.7
# Desc: children of struct_declarations.character
gdbtk_test c_variable-4.7 {children of struct_declarations.character} {
  get_children struct_declarations.character
} {}

# Test: c_variable-4.8
# Desc: number of children of struct_declarations.character
gdbtk_test c_variable-4.8 {number of children of struct_declarations.character} {
  $var(struct_declarations.character) numChildren
} {0}

# Test: c_variable-4.9
# Desc: children of struct_declarations.char_ptr
gdbtk_test c_variable-4.9 {children of struct_declarations.char_ptr} {
  get_children struct_declarations.char_ptr
} {*char_ptr}

# Test: c_variable-4.10
# Desc: number of children of struct_declarations.char_ptr
gdbtk_test c_variable-4.10 {number of children of struct_declarations.char_ptr} {
  $var(struct_declarations.char_ptr) numChildren
} {1}

# Test: c_variable-4.11
# Desc: children of struct_declarations.long_int
gdbtk_test c_variable-4.11 {children of struct_declarations.long_int} {

  get_children struct_declarations.long_int
} {}

# Test: c_variable-4.12
# Desc: number of children of struct_declarations.long_int
gdbtk_test c_variable-4.12 {number of children of struct_declarations.long_int} {
  $var(struct_declarations.long_int) numChildren
} {0}

# Test: c_variable-4.13
# Desc: children of int_ptr_ptr
gdbtk_test c_variable-4.13 {children of int_ptr_ptr} {
  get_children struct_declarations.int_ptr_ptr
} {*int_ptr_ptr}

# Test: c_variable-4.14
# Desc: number of children of int_ptr_ptr
gdbtk_test c_variable-4.14 {number of children of int_ptr_ptr} {
  $var(struct_declarations.int_ptr_ptr) numChildren
} {1}

# Test: c_variable-4.15
# Desc: children of struct_declarations.long_array
gdbtk_test c_variable-4.15 {children of struct_declarations.long_array} {
  get_children struct_declarations.long_array
} {0 1 2 3 4 5 6 7 8 9}

# Test: c_variable-4.16
# Desc: number of children of struct_declarations.long_array
gdbtk_test c_variable-4.16 {number of children of struct_declarations.long_array} {
  $var(struct_declarations.long_array) numChildren
} {10}

# Test: c_variable-4.17
# Desc: children of struct_declarations.func_ptr
gdbtk_test c_variable-4.17 {children of struct_declarations.func_ptr} {
  get_children struct_declarations.func_ptr
} {}

# Test: c_variable-4.18
# Desc: number of children of struct_declarations.func_ptr
gdbtk_test c_variable-4.18 {number of children of struct_declarations.func_ptr} {
  $var(struct_declarations.func_ptr) numChildren
} {0}

# Test: c_variable-4.19
# Desc: children of struct_declarations.func_ptr_struct
gdbtk_test c_variable-4.19 {children of struct_declarations.func_ptr_struct} {
  get_children struct_declarations.func_ptr_struct
} {}

# Test: c_variable-4.20
# Desc: number of children of struct_declarations.func_ptr_struct
gdbtk_test c_variable-4.20 {number of children of struct_declarations.func_ptr_struct} {
  $var(struct_declarations.func_ptr_struct) numChildren
} {0}

# Test: c_variable-4.21
# Desc: children of struct_declarations.func_ptr_ptr
gdbtk_test c_variable-4.21 {children of struct_declarations.func_ptr_ptr} {
  get_children struct_declarations.func_ptr_ptr
} {}

# Test: c_variable-4.22
# Desc: number of children of struct_declarations.func_ptr_ptr
gdbtk_test c_variable-4.22 {number of children of struct_declarations.func_ptr_ptr} {
  $var(struct_declarations.func_ptr_ptr) numChildren
} {0}

# Test: c_variable-4.23
# Desc: children of struct_declarations.u1
gdbtk_test c_variable-4.23 {children of struct_declarations.u1} {
  get_children struct_declarations.u1
} {a b c d}

# Test: c_variable-4.24
# Desc: number of children of struct_declarations.u1
gdbtk_test c_variable-4.24 {number of children of struct_declarations.u1} {
  $var(struct_declarations.u1) numChildren
} {4}

# Test: c_variable-4.25
# Desc: children of struct_declarations.s2
gdbtk_test c_variable-4.25 {children of struct_declarations.s2} {
  get_children struct_declarations.s2
} {u2 g h i}

# Test: c_variable-4.26
# Desc: number of children of struct_declarations.s2
gdbtk_test c_variable-4.26 {number of children of struct_declarations.s2} {
  $var(struct_declarations.s2) numChildren
} {4}

# Test: c_variable-4.27
# Desc: children of struct_declarations.long_array.1
gdbtk_test c_variable-4.27 {children of struct_declarations.long_array.1} {
  get_children struct_declarations.long_array.1
} {}

# Test: c_variable-4.28
# Desc: number of children of struct_declarations.long_array.1
gdbtk_test c_variable-4.28 {number of children of struct_declarations.long_array.1} {
  $var(struct_declarations.long_array.1) numChildren
} {0}

# Test: c_variable-4.29
# Desc: children of struct_declarations.long_array.2
gdbtk_test c_variable-4.29 {children of struct_declarations.long_array.2} {
  get_children struct_declarations.long_array.2
} {}

# Test: c_variable-4.30
# Desc: number of children of struct_declarations.long_array.2
gdbtk_test c_variable-4.30 {number of children of struct_declarations.long_array.2} {
  $var(struct_declarations.long_array.2) numChildren
} {0}

# Test: c_variable-4.31
# Desc: children of struct_declarations.long_array.3
gdbtk_test c_variable-4.31 {children of struct_declarations.long_array.3} {
  get_children struct_declarations.long_array.3
} {}

# Test: c_variable-4.32
# Desc: number of children of struct_declarations.long_array.3
gdbtk_test c_variable-4.32 {number of children of struct_declarations.long_array.3} {
  $var(struct_declarations.long_array.3) numChildren
} {0}

# Test: c_variable-4.33 
# Desc: children of struct_declarations.long_array.4
gdbtk_test c_variable-4.33 {children of struct_declarations.long_array.4} {
  get_children struct_declarations.long_array.4
} {}

# Test: c_variable-4.34
# Desc: number of children of struct_declarations.long_array.4
gdbtk_test c_variable-4.34 {number of children of struct_declarations.long_array.4} {
  $var(struct_declarations.long_array.4) numChildren
} {0}

# Test: c_variable-4.35
# Desc: children of struct_declarations.long_array.5
gdbtk_test c_variable-4.35 {children of struct_declarations.long_array.5} {
  get_children struct_declarations.long_array.5
} {}

# Test: c_variable-4.36
# Desc: number of children of struct_declarations.long_array.5
gdbtk_test c_variable-4.36 {number of children of struct_declarations.long_array.5} {
  $var(struct_declarations.long_array.5) numChildren
} {0}

# Test: c_variable-4.37
# Desc: children of struct_declarations.long_array.6
gdbtk_test c_variable-4.37 {children of struct_declarations.long_array.6} {
  get_children struct_declarations.long_array.6
} {}

# Test: c_variable-4.38
# Desc: number of children of struct_declarations.long_array.6
gdbtk_test c_variable-4.38 {number of children of struct_declarations.long_array.6} {
  $var(struct_declarations.long_array.6) numChildren
} {0}

# Test: c_variable-4.39
# Desc: children of struct_declarations.long_array.7
gdbtk_test c_variable-4.39 {children of struct_declarations.long_array.7} {
  get_children struct_declarations.long_array.7
} {}

# Test: c_variable-4.40
# Desc: number of children of struct_declarations.long_array.7
gdbtk_test c_variable-4.40 {number of children of struct_declarations.long_array.7} {
  $var(struct_declarations.long_array.7) numChildren
} {0}

# Test: c_variable-4.41
# Desc: children of struct_declarations.long_array.8
gdbtk_test c_variable-4.41 {children of struct_declarations.long_array.8} {
  get_children struct_declarations.long_array.8
} {}

# Test: c_variable-4.42
# Desc: number of children of struct_declarations.long_array.8
gdbtk_test c_variable-4.42 {number of children of struct_declarations.long_array.8} {
  $var(struct_declarations.long_array.8) numChildren
} {0}

# Test: c_variable-4.43
# Desc: children of struct_declarations.long_array.9
gdbtk_test c_variable-4.43 {children of struct_declarations.long_array.9} {
  get_children struct_declarations.long_array.9
} {}

# Test: c_variable-4.44
# Desc: number of children of struct_declarations.long_array.9
gdbtk_test c_variable-4.44 {number of children of struct_declarations.long_array.9} {
  $var(struct_declarations.long_array.9) numChildren
} {0}

# Test: c_variable-4.45
# Desc: children of struct_declarations.u1.a
gdbtk_test c_variable-4.45 {children of struct_declarations.u1.a} {
  get_children struct_declarations.u1.a
} {}

# Test: c_variable-4.46
# Desc: number of children of struct_declarations.u1.a
gdbtk_test c_variable-4.46 {number of children of struct_declarations.u1.a} {
  $var(struct_declarations.u1.a) numChildren
} {0}

# Test: c_variable-4.47
# Desc: children of struct_declarations.u1.b
gdbtk_test c_variable-4.47 {children of struct_declarations.u1.b} {
  get_children struct_declarations.u1.b
} {*b}

# Test: c_variable-4.48
# Desc: number of children of struct_declarations.u1.b
gdbtk_test c_variable-4.48 {number of children of struct_declarations.u1.b} {
  $var(struct_declarations.u1.b) numChildren
} {1}

# Test: c_variable-4.49
# Desc: children of struct_declarations.u1.c
gdbtk_test c_variable-4.49 {children of struct_declarations.u1.c} {
  get_children struct_declarations.u1.c
} {}

# Test: c_variable-4.50
# Desc: number of children of struct_declarations.u1.c
gdbtk_test c_variable-4.50 {number of children of struct_declarations.u1.c} {
  $var(struct_declarations.u1.c) numChildren
} {0}

# Test: c_variable-4.51
# Desc: children of struct_declarations.u1.d
gdbtk_test c_variable-4.51 {children of struct_declarations.u1.d} {
  get_children struct_declarations.u1.d
} {}

# Test: c_variable-4.52
# Desc: number of children of struct_declarations.u1.d
gdbtk_test c_variable-4.52 {number of children of struct_declarations.u1.d} {
  $var(struct_declarations.u1.d) numChildren
} {0}

# Test: c_variable-4.53
# Desc: children of struct_declarations.s2.u2
gdbtk_test c_variable-4.53 {children of struct_declarations.s2.u2} {
  get_children struct_declarations.s2.u2
} {u1s1 f u1s2}

# Test: c_variable-4.54
# Desc: number of children of struct_declarations.s2.u2
gdbtk_test c_variable-4.54 {number of children of struct_declarations.s2.u2} {
  $var(struct_declarations.s2.u2) numChildren
} {3}

# Test: c_variable-4.55
# Desc: children of struct_declarations.s2.g
gdbtk_test c_variable-4.55 {children of struct_declarations.s2.g} {
  get_children struct_declarations.s2.g
} {}

# Test: c_variable-4.56
# Desc: number of children of struct_declarations.s2.g
gdbtk_test c_variable-4.56 {number of children of struct_declarations.s2.g} {
  $var(struct_declarations.s2.g) numChildren
} {0}

# Test: c_variable-4.57
# Desc: children of struct_declarations.s2.h
gdbtk_test c_variable-4.57 {children of struct_declarations.s2.h} {
  get_children struct_declarations.s2.h
} {}

# Test: c_variable-4.58
# Desc: number of children of struct_declarations.s2.h
gdbtk_test c_variable-4.58 {number of children of struct_declarations.s2.h} {
  $var(struct_declarations.s2.h) numChildren
} {0}

# Test: c_variable-4.59
# Desc: children of struct_declarations.s2.i
gdbtk_test c_variable-4.59 {children of struct_declarations.s2.i} {
  get_children struct_declarations.s2.i
} {0 1 2 3 4 5 6 7 8 9}

# Test: c_variable-4.60
# Desc: number of children of struct_declarations.s2.i
gdbtk_test c_variable-4.60 {number of children of struct_declarations.s2.i} {
  $var(struct_declarations.s2.i) numChildren
} {10}

# Test: c_variable-4.61
# Desc: children of struct_declarations.s2.u2.u1s1
gdbtk_test c_variable-4.61 {children of struct_declarations.s2.u2.u1s1} {
  get_children struct_declarations.s2.u2.u1s1
} {d e func foo}

# Test: c_variable-4.62
# Desc: number of children of struct_declarations.s2.u2.u1s1
gdbtk_test c_variable-4.62 {number of children of struct_declarations.s2.u2.u1s1} {
  $var(struct_declarations.s2.u2.u1s1) numChildren
} {4}

# Test: c_variable-4.63
# Desc: children of struct_declarations.s2.u2.f
gdbtk_test c_variable-4.63 {children of struct_declarations.s2.u2.f} {
  get_children struct_declarations.s2.u2.f
} {}

# Test: c_variable-4.64
# Desc: number of children of struct_declarations.s2.u2.f
gdbtk_test c_variable-4.64 {number of children of struct_declarations.s2.u2.f} {
  $var(struct_declarations.s2.u2.f) numChildren
} {0}

# Test: c_variable-4.65
# Desc: children of struct_declarations.s2.u2.u1s2
gdbtk_test c_variable-4.65 {children of struct_declarations.s2.u2.u1s2} {
  get_children struct_declarations.s2.u2.u1s2
} {array_ptr func}

# Test: c_variable-4.66
# Desc: number of children of struct_declarations.s2.u2.u1s2
gdbtk_test c_variable-4.66 {number of children of struct_declarations.s2.u2.u1s2} {
  $var(struct_declarations.s2.u2.u1s2) numChildren
} {2}

# Test: c_variable-4.67
# Desc: children of struct_declarations.s2.u2.u1s1.d
gdbtk_test c_variable-4.67 {children of struct_declarations.s2.u2.u1s1.d} {
  get_children struct_declarations.s2.u2.u1s1.d
} {}

# Test: c_variable-4.68
# Desc: number of children of struct_declarations.s2.u2.u1s1.d
gdbtk_test c_variable-4.68 {number of children of struct_declarations.s2.u2.u1s1.d} {
  $var(struct_declarations.s2.u2.u1s1.d) numChildren
} {0}

# Test: c_variable-4.69
# Desc: children of struct_declarations.s2.u2.u1s1.e
gdbtk_test c_variable-4.69 {children of struct_declarations.s2.u2.u1s1.e} {
  get_children struct_declarations.s2.u2.u1s1.e
} {0 1 2 3 4 5 6 7 8 9}

# Test: c_variable-4.70
# Desc: number of children of struct_declarations.s2.u2.u1s1.e
gdbtk_test c_variable-4.70 {number of children of struct_declarations.s2.u2.u1s1.e} {
  $var(struct_declarations.s2.u2.u1s1.e) numChildren
} {10}

# Test: c_variable-4.71
# Desc: children of struct_declarations.s2.u2.u1s1.func
gdbtk_test c_variable-4.71 {children of struct_declarations.s2.u2.u1s1.func} {
  get_children struct_declarations.s2.u2.u1s1.func
} {}

# Test: c_variable-4.72
# Desc: number of children of struct_declarations.s2.u2.u1s1.func
gdbtk_test c_variable-4.72 {number of children of struct_declarations.s2.u2.u1s1.func} {
  $var(struct_declarations.s2.u2.u1s1.func) numChildren
} {0}

# Test: c_variable-4.73
# Desc: children of struct_declarations.s2.u2.u1s1.foo
gdbtk_test c_variable-4.73 {children of struct_declarations.s2.u2.u1s1.foo} {
  get_children struct_declarations.s2.u2.u1s1.foo
} {}

# Test: c_variable-4.74
# Desc: number of children of struct_declarations.s2.u2.u1s1.foo
gdbtk_test c_variable-4.74 {number of children of struct_declarations.s2.u2.u1s1.foo} {
  $var(struct_declarations.s2.u2.u1s1.foo) numChildren
} {0}

# Test: c_variable-4.75
# Desc: children of struct_declarations.s2.u2.u1s2.array_ptr
gdbtk_test c_variable-4.75 {children of struct_declarations.s2.u2.u1s2.array_ptr} {
  get_children struct_declarations.s2.u2.u1s2.array_ptr
} {0 1}

# Test: c_variable-4.76
# Desc: number of children of struct_declarations.s2.u2.u1s2.array_ptr
gdbtk_test c_variable-4.76 {number of children of struct_declarations.s2.u2.u1s2.array_ptr} {
  $var(struct_declarations.s2.u2.u1s2.array_ptr) numChildren
} {2}

# Test: c_variable-4.77
# Desc: children of struct_declarations.s2.u2.u1s2.func
gdbtk_test c_variable-4.77 {children of struct_declarations.s2.u2.u1s2.func} {
  get_children struct_declarations.s2.u2.u1s2.func
} {}

# Test: c_variable-4.78
# Desc: number of children of struct_declarations.s2.u2.u1s2.func
gdbtk_test c_variable-4.78 {number of children of struct_declarations.s2.u2.u1s2.func} {
  $var(struct_declarations.s2.u2.u1s2.func) numChildren
} {0}

# Test: c_variable-4.79
# Desc: children of struct_declarations.*int_ptr_ptr
gdbtk_test c_variable-4.79 {children of struct_declarations.*int_ptr_ptr} {
  get_children struct_declarations.int_ptr_ptr.*int_ptr_ptr
} {**int_ptr_ptr}

# Test: c_variable-4.80
# Desc: Number of children of struct_declarations.*int_ptr_ptr
gdbtk_test c_variable-4.80 {Number of children of struct_declarations.*int_ptr_ptr} {
  $var(struct_declarations.int_ptr_ptr.*int_ptr_ptr) numChildren
} {1}

# Step to "struct_declarations.integer = 123;"
gdb_cmd "step"

# Test: c_variable-4.81
# Desc: create local variable "weird"
gdbtk_test c_variable-4.81 {create local variable "weird"} {
  create_variable weird
} {0}

# Test: c_variable-4.82
# Desc: children of weird
gdbtk_test c_variable-4.82 {children of weird} {
  get_children weird
} {integer character char_ptr long_int int_ptr_ptr long_array func_ptr func_ptr_struct func_ptr_ptr u1 s2}

# Test: c_variable-4.83
# Desc: number of children of weird
gdbtk_test c_variable-4.83 {number of children of weird} {
  $var(weird) numChildren
} {11}

# Test: c_variable-4.84
# Desc: children of weird->long_array
gdbtk_test c_variable-4.84 {children of weird->long_array} {
  get_children weird.long_array
} {0 1 2 3 4 5 6 7 8 9}

# Test: c_variable-4.85
# Desc: number of children of weird->long_array
gdbtk_test c_variable-4.85 {number of children of weird->long_array} {
  $var(weird.long_array) numChildren
} {10}

# Test: c_variable-4.86
# Desc: children of weird->int_ptr_ptr
gdbtk_test c_variable-4.86 {children of weird->int_ptr_ptr} {
  get_children weird.int_ptr_ptr
} {*int_ptr_ptr}

# Test: c_variable-4.87
# Desc: number of children of weird->int_ptr_ptr
gdbtk_test c_variable-4.87 {number of children of weird->int_ptr_ptr} {
  $var(weird.int_ptr_ptr) numChildren
} {1}

# Test: c_variable-4.88
# Desc: children of *weird->int_ptr_ptr
gdbtk_test c_variable-4.88 {children of *weird->int_ptr_ptr} {
  get_children weird.int_ptr_ptr.*int_ptr_ptr
} {**int_ptr_ptr}

# Test: c_variable-4.89
# Desc: number of children *weird->int_ptr_ptr
gdbtk_test c_variable-4.89 {number of children *weird->int_ptr_ptr} {
  $var(weird.int_ptr_ptr.*int_ptr_ptr) numChildren
} {1}

# Test: c_variable-4.90
# Desc: create weird->int_ptr_ptr
gdbtk_test c_variable-4.90 {create weird->int_ptr_ptr} {
  create_variable weird->int_ptr_ptr
} {0}

# Test: c_variable-4.91
# Desc: children of weird->int_ptr_ptr
gdbtk_test c_variable-4.91 {children of weird->int_ptr_ptr} {
  get_children weird->int_ptr_ptr
} {*weird->int_ptr_ptr}

# Test: c_variable-4.92
# Desc: number of children of (weird->int_ptr_ptr)
gdbtk_test c_variable-4.92 {number of children of (weird->int_ptr_ptr)} {
  $var(weird->int_ptr_ptr) numChildren
} {1}

# Test: c_variable-4.93
# Desc: children of *(weird->int_ptr_ptr)
gdbtk_test c_variable-4.93 {children of *(weird->int_ptr_ptr)} {
  get_children weird->int_ptr_ptr.*weird->int_ptr_ptr
} {**weird->int_ptr_ptr}

# Test: c_variable-4.94
# Desc: number of children of *(weird->int_ptr_ptr)
gdbtk_test c_variable-4.94 {number of children of *(weird->int_ptr_ptr)} {
  $var(weird->int_ptr_ptr.*weird->int_ptr_ptr) numChildren
} {1}

# Test: c_variable-4.95
# Desc: children of *(*(weird->int_ptr_ptr))
gdbtk_test c_variable-4.95 {children of *(*(weird->int_ptr_ptr))} {
  get_children weird->int_ptr_ptr.*weird->int_ptr_ptr.**weird->int_ptr_ptr
} {}

# Test: c_variable-4.96
# Desc: number of children of *(*(weird->int_ptr_ptr))
gdbtk_test c_variable-4.96 {number of children of **weird->int_ptr_ptr} {
  $var(weird->int_ptr_ptr.*weird->int_ptr_ptr.**weird->int_ptr_ptr) numChildren
} {0}

# Test: c_variable-4.97
# Desc: is weird editable
gdbtk_test c_variable-4.97 {is weird editable} {
  $var(weird) editable
} {1}

# Test: c_variable-4.98
# Desc: is weird->int_ptr_ptr editable
gdbtk_test c_variable-4.98 {is weird->int_ptr_ptr editable} {
  $var(weird.int_ptr_ptr) editable
} {1}

# Test: c_variable-4.99
# Desc: is *(weird->int_ptr_ptr) editable
gdbtk_test c_variable-4.99 {is *(weird->int_ptr_ptr) editable} {
  $var(weird.int_ptr_ptr.*int_ptr_ptr) editable
} {1}

# Test: c_variable-4.100
# Desc: is *(*(weird->int_ptr_ptr)) editable
gdbtk_test c_variable-4.100 {is *(*(weird->int_ptr_ptr)) editable} {
  $var(weird.int_ptr_ptr.*int_ptr_ptr.**int_ptr_ptr) editable
} {1}

# Test: c_variable-4.101
# Desc: is weird->u1 editable
gdbtk_test c_variable-4.101 {is weird->u1 editable} {
  $var(weird.u1) editable
} {0}

# Test: c_variable-4.102
# Desc: is weird->s2 editable
gdbtk_test c_variable-4.102 {is weird->s2 editable} {
  $var(weird.s2) editable
} {0}

# Test: c_variable-4.103
# Desc: is struct_declarations.u1.a editable
gdbtk_test c_variable-4.103 {is struct_declarations.u1.a editable} {
  $var(struct_declarations.u1.a) editable
} {1}

# Test: c_variable-4.104
# Desc: is struct_declarations.u1.b editable
gdbtk_test c_variable-4.104 {is struct_declarations.u1.b editable} {
  $var(struct_declarations.u1.b) editable
} {1}

# Test: c_variable-4.105
# Desc: is struct_declarations.u1.c editable
gdbtk_test c_variable-4.105 {is struct_declarations.u1.c editable} {
  $var(struct_declarations.u1.c) editable
} {1}

# Test: c_variable-4.106
# Desc: is struct_declarations.long_array editable
gdbtk_test c_variable-4.106 {is struct_declarations.long_array editable} {
  $var(struct_declarations.long_array) editable
} {0}

# Test: c_variable-4.107
# Desc: is struct_declarations.long_array[0] editable
gdbtk_test c_variable-4.107 {is struct_declarations.long_array[0] editable} {
  $var(struct_declarations.long_array.0) editable
} {1}

# Test: c_variable-4.108
# Desc: is struct_declarations editable
gdbtk_test c_variable-4.108 {is struct_declarations editable} {
  $var(struct_declarations) editable
} {0}

delete_variable weird

#####                         #####
#                                 #
# children and update tests #
#                                 #
#####                         #####

# Test: c_variable-5.1
# Desc: check that nothing changed
gdbtk_test c_variable-5.1 {check that nothing changed} {
  check_update
} {{} {struct_declarations.s2.i.3 struct_declarations.func_ptr_ptr struct_declarations.s2.i.4 struct_declarations.s2.i.5 struct_declarations.s2.i.6 struct_declarations.func_ptr struct_declarations.s2.i.7 struct_declarations.s2.i.8 struct_declarations.s2.i.9 struct_declarations.s2.u2.u1s1.d struct_declarations.func_ptr_struct struct_declarations.s2.u2.u1s1.e struct_declarations.u1 struct_declarations.char_ptr.*char_ptr struct_declarations.long_int struct_declarations.s2.u2.u1s2.func struct_declarations.integer struct_declarations.s2.u2 struct_declarations.s2.u2.u1s1.e.0 struct_declarations.s2.u2.u1s1.e.1 struct_declarations.long_array.0 struct_declarations.s2.u2.u1s1.e.2 struct_declarations.long_array.1 struct_declarations.u1.a struct_declarations.s2.u2.u1s1.e.3 struct_declarations.long_array.2 struct_declarations.u1.b struct_declarations.s2.u2.u1s1.e.4 struct_declarations.long_array.3 struct_declarations.u1.c struct_declarations.s2.u2.u1s1.e.5 struct_declarations.long_array.4 struct_declarations.u1.d struct_declarations.u1.b.*b struct_declarations.int_ptr_ptr.*int_ptr_ptr.**int_ptr_ptr struct_declarations.s2.u2.u1s1.e.6 struct_declarations.long_array.5 struct_declarations.s2.u2.u1s1.e.7 struct_declarations.long_array.6 struct_declarations.s2.u2.u1s1.e.8 struct_declarations.long_array.7 struct_declarations.s2.u2.u1s1.e.9 struct_declarations.long_array.8 struct_declarations.character struct_declarations.long_array.9 struct_declarations.int_ptr_ptr.*int_ptr_ptr struct_declarations.s2.u2.u1s1.func struct_declarations.s2.u2.u1s2.array_ptr struct_declarations.s2.u2.f struct_declarations.s2.u2.u1s1.foo struct_declarations.s2.u2.u1s1 struct_declarations.s2.u2.u1s2.array_ptr.0 struct_declarations.char_ptr struct_declarations.s2.u2.u1s2 struct_declarations.s2.u2.u1s2.array_ptr.1 struct_declarations.int_ptr_ptr struct_declarations.s2 struct_declarations.long_array struct_declarations.s2.g struct_declarations.s2.i.0 struct_declarations.s2.h struct_declarations.s2.i.1 struct_declarations.s2.i struct_declarations.s2.i.2}}

# Step over "struct_declarations.integer = 123;"
gdb_cmd "step"

# Test: c_variable-5.2
# Desc: check that integer changed
gdbtk_test c_variable-5.2 {check that integer changed} {
  check_update
} {struct_declarations.integer {struct_declarations.s2.i.3 struct_declarations.func_ptr_ptr struct_declarations.s2.i.4 struct_declarations.s2.i.5 struct_declarations.s2.i.6 struct_declarations.func_ptr struct_declarations.s2.i.7 struct_declarations.s2.i.8 struct_declarations.s2.i.9 struct_declarations.s2.u2.u1s1.d struct_declarations.func_ptr_struct struct_declarations.s2.u2.u1s1.e struct_declarations.u1 struct_declarations.char_ptr.*char_ptr struct_declarations.long_int struct_declarations.s2.u2.u1s2.func struct_declarations.integer struct_declarations.s2.u2 struct_declarations.s2.u2.u1s1.e.0 struct_declarations.s2.u2.u1s1.e.1 struct_declarations.long_array.0 struct_declarations.s2.u2.u1s1.e.2 struct_declarations.long_array.1 struct_declarations.u1.a struct_declarations.s2.u2.u1s1.e.3 struct_declarations.long_array.2 struct_declarations.u1.b struct_declarations.s2.u2.u1s1.e.4 struct_declarations.long_array.3 struct_declarations.u1.c struct_declarations.s2.u2.u1s1.e.5 struct_declarations.long_array.4 struct_declarations.u1.d struct_declarations.u1.b.*b struct_declarations.int_ptr_ptr.*int_ptr_ptr.**int_ptr_ptr struct_declarations.s2.u2.u1s1.e.6 struct_declarations.long_array.5 struct_declarations.s2.u2.u1s1.e.7 struct_declarations.long_array.6 struct_declarations.s2.u2.u1s1.e.8 struct_declarations.long_array.7 struct_declarations.s2.u2.u1s1.e.9 struct_declarations.long_array.8 struct_declarations.character struct_declarations.long_array.9 struct_declarations.int_ptr_ptr.*int_ptr_ptr struct_declarations.s2.u2.u1s1.func struct_declarations.s2.u2.u1s2.array_ptr struct_declarations.s2.u2.f struct_declarations.s2.u2.u1s1.foo struct_declarations.s2.u2.u1s1 struct_declarations.s2.u2.u1s2.array_ptr.0 struct_declarations.char_ptr struct_declarations.s2.u2.u1s2 struct_declarations.s2.u2.u1s2.array_ptr.1 struct_declarations.int_ptr_ptr struct_declarations.s2 struct_declarations.long_array struct_declarations.s2.g struct_declarations.s2.i.0 struct_declarations.s2.h struct_declarations.s2.i.1 struct_declarations.s2.i struct_declarations.s2.i.2}}

# Step over:
#    weird->char_ptr = "hello";
#    bar = 2121;
#    foo = &bar;
for {set i 0} {$i < 3} {incr i} {
  gdb_cmd "step"
}

# Test: c_variable-5.3
# Desc: check that char_ptr changed
gdbtk_test c_variable-5.3 {check that char_ptr changed} {
  check_update
} {{{struct_declarations.char_ptr struct_declarations.char_ptr.*char_ptr}} {struct_declarations.s2.i.3 struct_declarations.func_ptr_ptr struct_declarations.s2.i.4 struct_declarations.s2.i.5 struct_declarations.s2.i.6 struct_declarations.func_ptr struct_declarations.s2.i.7 struct_declarations.s2.i.8 struct_declarations.s2.i.9 struct_declarations.s2.u2.u1s1.d struct_declarations.func_ptr_struct struct_declarations.s2.u2.u1s1.e struct_declarations.u1 struct_declarations.char_ptr.*char_ptr struct_declarations.long_int struct_declarations.s2.u2.u1s2.func struct_declarations.integer struct_declarations.s2.u2 struct_declarations.s2.u2.u1s1.e.0 struct_declarations.s2.u2.u1s1.e.1 struct_declarations.long_array.0 struct_declarations.s2.u2.u1s1.e.2 struct_declarations.long_array.1 struct_declarations.u1.a struct_declarations.s2.u2.u1s1.e.3 struct_declarations.long_array.2 struct_declarations.u1.b struct_declarations.s2.u2.u1s1.e.4 struct_declarations.long_array.3 struct_declarations.u1.c struct_declarations.s2.u2.u1s1.e.5 struct_declarations.long_array.4 struct_declarations.u1.d struct_declarations.u1.b.*b struct_declarations.int_ptr_ptr.*int_ptr_ptr.**int_ptr_ptr struct_declarations.s2.u2.u1s1.e.6 struct_declarations.long_array.5 struct_declarations.s2.u2.u1s1.e.7 struct_declarations.long_array.6 struct_declarations.s2.u2.u1s1.e.8 struct_declarations.long_array.7 struct_declarations.s2.u2.u1s1.e.9 struct_declarations.long_array.8 struct_declarations.character struct_declarations.long_array.9 struct_declarations.int_ptr_ptr.*int_ptr_ptr struct_declarations.s2.u2.u1s1.func struct_declarations.s2.u2.u1s2.array_ptr struct_declarations.s2.u2.f struct_declarations.s2.u2.u1s1.foo struct_declarations.s2.u2.u1s1 struct_declarations.s2.u2.u1s2.array_ptr.0 struct_declarations.char_ptr struct_declarations.s2.u2.u1s2 struct_declarations.s2.u2.u1s2.array_ptr.1 struct_declarations.int_ptr_ptr struct_declarations.s2 struct_declarations.long_array struct_declarations.s2.g struct_declarations.s2.i.0 struct_declarations.s2.h struct_declarations.s2.i.1 struct_declarations.s2.i struct_declarations.s2.i.2}}

# Step over "struct_declarations.int_ptr_ptr = &foo;"
gdb_cmd "step"

# Test: c_variable-5.4
# Desc: check that int_ptr_ptr and children changed
gdbtk_test c_variable-5.4 {check that int_ptr_ptr and children changed} {
  check_update
} {{{struct_declarations.int_ptr_ptr struct_declarations.int_ptr_ptr.*int_ptr_ptr struct_declarations.int_ptr_ptr.*int_ptr_ptr.**int_ptr_ptr}} {struct_declarations.s2.i.3 struct_declarations.func_ptr_ptr struct_declarations.s2.i.4 struct_declarations.s2.i.5 struct_declarations.s2.i.6 struct_declarations.func_ptr struct_declarations.s2.i.7 struct_declarations.s2.i.8 struct_declarations.s2.i.9 struct_declarations.s2.u2.u1s1.d struct_declarations.func_ptr_struct struct_declarations.s2.u2.u1s1.e struct_declarations.u1 struct_declarations.char_ptr.*char_ptr struct_declarations.long_int struct_declarations.s2.u2.u1s2.func struct_declarations.integer struct_declarations.s2.u2 struct_declarations.s2.u2.u1s1.e.0 struct_declarations.s2.u2.u1s1.e.1 struct_declarations.long_array.0 struct_declarations.s2.u2.u1s1.e.2 struct_declarations.long_array.1 struct_declarations.u1.a struct_declarations.s2.u2.u1s1.e.3 struct_declarations.long_array.2 struct_declarations.u1.b struct_declarations.s2.u2.u1s1.e.4 struct_declarations.long_array.3 struct_declarations.u1.c struct_declarations.s2.u2.u1s1.e.5 struct_declarations.long_array.4 struct_declarations.u1.d struct_declarations.u1.b.*b struct_declarations.int_ptr_ptr.*int_ptr_ptr.**int_ptr_ptr struct_declarations.s2.u2.u1s1.e.6 struct_declarations.long_array.5 struct_declarations.s2.u2.u1s1.e.7 struct_declarations.long_array.6 struct_declarations.s2.u2.u1s1.e.8 struct_declarations.long_array.7 struct_declarations.s2.u2.u1s1.e.9 struct_declarations.long_array.8 struct_declarations.character struct_declarations.long_array.9 struct_declarations.int_ptr_ptr.*int_ptr_ptr struct_declarations.s2.u2.u1s1.func struct_declarations.s2.u2.u1s2.array_ptr struct_declarations.s2.u2.f struct_declarations.s2.u2.u1s1.foo struct_declarations.s2.u2.u1s1 struct_declarations.s2.u2.u1s2.array_ptr.0 struct_declarations.char_ptr struct_declarations.s2.u2.u1s2 struct_declarations.s2.u2.u1s2.array_ptr.1 struct_declarations.int_ptr_ptr struct_declarations.s2 struct_declarations.long_array struct_declarations.s2.g struct_declarations.s2.i.0 struct_declarations.s2.h struct_declarations.s2.i.1 struct_declarations.s2.i struct_declarations.s2.i.2}}

# Step over "weird->long_array[0] = 1234;"
gdb_cmd "step"

# Test: c_variable-5.5
# Desc: check that long_array[0] changed
gdbtk_test c_variable-5.5 {check that long_array[0] changed} {
  check_update
} {struct_declarations.long_array.0 {struct_declarations.s2.i.3 struct_declarations.func_ptr_ptr struct_declarations.s2.i.4 struct_declarations.s2.i.5 struct_declarations.s2.i.6 struct_declarations.func_ptr struct_declarations.s2.i.7 struct_declarations.s2.i.8 struct_declarations.s2.i.9 struct_declarations.s2.u2.u1s1.d struct_declarations.func_ptr_struct struct_declarations.s2.u2.u1s1.e struct_declarations.u1 struct_declarations.char_ptr.*char_ptr struct_declarations.long_int struct_declarations.s2.u2.u1s2.func struct_declarations.integer struct_declarations.s2.u2 struct_declarations.s2.u2.u1s1.e.0 struct_declarations.s2.u2.u1s1.e.1 struct_declarations.long_array.0 struct_declarations.s2.u2.u1s1.e.2 struct_declarations.long_array.1 struct_declarations.u1.a struct_declarations.s2.u2.u1s1.e.3 struct_declarations.long_array.2 struct_declarations.u1.b struct_declarations.s2.u2.u1s1.e.4 struct_declarations.long_array.3 struct_declarations.u1.c struct_declarations.s2.u2.u1s1.e.5 struct_declarations.long_array.4 struct_declarations.u1.d struct_declarations.u1.b.*b struct_declarations.int_ptr_ptr.*int_ptr_ptr.**int_ptr_ptr struct_declarations.s2.u2.u1s1.e.6 struct_declarations.long_array.5 struct_declarations.s2.u2.u1s1.e.7 struct_declarations.long_array.6 struct_declarations.s2.u2.u1s1.e.8 struct_declarations.long_array.7 struct_declarations.s2.u2.u1s1.e.9 struct_declarations.long_array.8 struct_declarations.character struct_declarations.long_array.9 struct_declarations.int_ptr_ptr.*int_ptr_ptr struct_declarations.s2.u2.u1s1.func struct_declarations.s2.u2.u1s2.array_ptr struct_declarations.s2.u2.f struct_declarations.s2.u2.u1s1.foo struct_declarations.s2.u2.u1s1 struct_declarations.s2.u2.u1s2.array_ptr.0 struct_declarations.char_ptr struct_declarations.s2.u2.u1s2 struct_declarations.s2.u2.u1s2.array_ptr.1 struct_declarations.int_ptr_ptr struct_declarations.s2 struct_declarations.long_array struct_declarations.s2.g struct_declarations.s2.i.0 struct_declarations.s2.h struct_declarations.s2.i.1 struct_declarations.s2.i struct_declarations.s2.i.2}}

# Step over "struct_declarations.long_array[1] = 2345;"
gdb_cmd "step"

# Test: c_variable-5.6
# Desc: check that long_array[1] changed
gdbtk_test c_variable-5.6 {check that long_array[1] changed} {
  check_update
} {struct_declarations.long_array.1 {struct_declarations.s2.i.3 struct_declarations.func_ptr_ptr struct_declarations.s2.i.4 struct_declarations.s2.i.5 struct_declarations.s2.i.6 struct_declarations.func_ptr struct_declarations.s2.i.7 struct_declarations.s2.i.8 struct_declarations.s2.i.9 struct_declarations.s2.u2.u1s1.d struct_declarations.func_ptr_struct struct_declarations.s2.u2.u1s1.e struct_declarations.u1 struct_declarations.char_ptr.*char_ptr struct_declarations.long_int struct_declarations.s2.u2.u1s2.func struct_declarations.integer struct_declarations.s2.u2 struct_declarations.s2.u2.u1s1.e.0 struct_declarations.s2.u2.u1s1.e.1 struct_declarations.long_array.0 struct_declarations.s2.u2.u1s1.e.2 struct_declarations.long_array.1 struct_declarations.u1.a struct_declarations.s2.u2.u1s1.e.3 struct_declarations.long_array.2 struct_declarations.u1.b struct_declarations.s2.u2.u1s1.e.4 struct_declarations.long_array.3 struct_declarations.u1.c struct_declarations.s2.u2.u1s1.e.5 struct_declarations.long_array.4 struct_declarations.u1.d struct_declarations.u1.b.*b struct_declarations.int_ptr_ptr.*int_ptr_ptr.**int_ptr_ptr struct_declarations.s2.u2.u1s1.e.6 struct_declarations.long_array.5 struct_declarations.s2.u2.u1s1.e.7 struct_declarations.long_array.6 struct_declarations.s2.u2.u1s1.e.8 struct_declarations.long_array.7 struct_declarations.s2.u2.u1s1.e.9 struct_declarations.long_array.8 struct_declarations.character struct_declarations.long_array.9 struct_declarations.int_ptr_ptr.*int_ptr_ptr struct_declarations.s2.u2.u1s1.func struct_declarations.s2.u2.u1s2.array_ptr struct_declarations.s2.u2.f struct_declarations.s2.u2.u1s1.foo struct_declarations.s2.u2.u1s1 struct_declarations.s2.u2.u1s2.array_ptr.0 struct_declarations.char_ptr struct_declarations.s2.u2.u1s2 struct_declarations.s2.u2.u1s2.array_ptr.1 struct_declarations.int_ptr_ptr struct_declarations.s2 struct_declarations.long_array struct_declarations.s2.g struct_declarations.s2.i.0 struct_declarations.s2.h struct_declarations.s2.i.1 struct_declarations.s2.i struct_declarations.s2.i.2}}

# Step over "weird->long_array[2] = 3456;"
gdb_cmd "step"

# Test: c_variable-5.7
# Desc: check that long_array[2] changed
gdbtk_test c_variable-5.7 {check that long_array[2] changed} {
  check_update
} {struct_declarations.long_array.2 {struct_declarations.s2.i.3 struct_declarations.func_ptr_ptr struct_declarations.s2.i.4 struct_declarations.s2.i.5 struct_declarations.s2.i.6 struct_declarations.func_ptr struct_declarations.s2.i.7 struct_declarations.s2.i.8 struct_declarations.s2.i.9 struct_declarations.s2.u2.u1s1.d struct_declarations.func_ptr_struct struct_declarations.s2.u2.u1s1.e struct_declarations.u1 struct_declarations.char_ptr.*char_ptr struct_declarations.long_int struct_declarations.s2.u2.u1s2.func struct_declarations.integer struct_declarations.s2.u2 struct_declarations.s2.u2.u1s1.e.0 struct_declarations.s2.u2.u1s1.e.1 struct_declarations.long_array.0 struct_declarations.s2.u2.u1s1.e.2 struct_declarations.long_array.1 struct_declarations.u1.a struct_declarations.s2.u2.u1s1.e.3 struct_declarations.long_array.2 struct_declarations.u1.b struct_declarations.s2.u2.u1s1.e.4 struct_declarations.long_array.3 struct_declarations.u1.c struct_declarations.s2.u2.u1s1.e.5 struct_declarations.long_array.4 struct_declarations.u1.d struct_declarations.u1.b.*b struct_declarations.int_ptr_ptr.*int_ptr_ptr.**int_ptr_ptr struct_declarations.s2.u2.u1s1.e.6 struct_declarations.long_array.5 struct_declarations.s2.u2.u1s1.e.7 struct_declarations.long_array.6 struct_declarations.s2.u2.u1s1.e.8 struct_declarations.long_array.7 struct_declarations.s2.u2.u1s1.e.9 struct_declarations.long_array.8 struct_declarations.character struct_declarations.long_array.9 struct_declarations.int_ptr_ptr.*int_ptr_ptr struct_declarations.s2.u2.u1s1.func struct_declarations.s2.u2.u1s2.array_ptr struct_declarations.s2.u2.f struct_declarations.s2.u2.u1s1.foo struct_declarations.s2.u2.u1s1 struct_declarations.s2.u2.u1s2.array_ptr.0 struct_declarations.char_ptr struct_declarations.s2.u2.u1s2 struct_declarations.s2.u2.u1s2.array_ptr.1 struct_declarations.int_ptr_ptr struct_declarations.s2 struct_declarations.long_array struct_declarations.s2.g struct_declarations.s2.i.0 struct_declarations.s2.h struct_declarations.s2.i.1 struct_declarations.s2.i struct_declarations.s2.i.2}}

# Step over:
#    struct_declarations.long_array[3] = 4567;
#    weird->long_array[4] = 5678;
#    struct_declarations.long_array[5] = 6789;
#    weird->long_array[6] = 7890;
#    struct_declarations.long_array[7] = 8901;
#    weird->long_array[8] = 9012;
#    struct_declarations.long_array[9] = 1234;
for {set i 0} {$i < 7} {incr i} {
  gdb_cmd "step"
}

# Test: c_variable-5.8
# Desc: check that long_array[3-9] changed
gdbtk_test c_variable-5.8 {check that long_array[3-9] changed} {
  check_update
} {{{struct_declarations.long_array.3 struct_declarations.long_array.4 struct_declarations.long_array.5 struct_declarations.long_array.6 struct_declarations.long_array.7 struct_declarations.long_array.8 struct_declarations.long_array.9}} {struct_declarations.s2.i.3 struct_declarations.func_ptr_ptr struct_declarations.s2.i.4 struct_declarations.s2.i.5 struct_declarations.s2.i.6 struct_declarations.func_ptr struct_declarations.s2.i.7 struct_declarations.s2.i.8 struct_declarations.s2.i.9 struct_declarations.s2.u2.u1s1.d struct_declarations.func_ptr_struct struct_declarations.s2.u2.u1s1.e struct_declarations.u1 struct_declarations.char_ptr.*char_ptr struct_declarations.long_int struct_declarations.s2.u2.u1s2.func struct_declarations.integer struct_declarations.s2.u2 struct_declarations.s2.u2.u1s1.e.0 struct_declarations.s2.u2.u1s1.e.1 struct_declarations.long_array.0 struct_declarations.s2.u2.u1s1.e.2 struct_declarations.long_array.1 struct_declarations.u1.a struct_declarations.s2.u2.u1s1.e.3 struct_declarations.long_array.2 struct_declarations.u1.b struct_declarations.s2.u2.u1s1.e.4 struct_declarations.long_array.3 struct_declarations.u1.c struct_declarations.s2.u2.u1s1.e.5 struct_declarations.long_array.4 struct_declarations.u1.d struct_declarations.u1.b.*b struct_declarations.int_ptr_ptr.*int_ptr_ptr.**int_ptr_ptr struct_declarations.s2.u2.u1s1.e.6 struct_declarations.long_array.5 struct_declarations.s2.u2.u1s1.e.7 struct_declarations.long_array.6 struct_declarations.s2.u2.u1s1.e.8 struct_declarations.long_array.7 struct_declarations.s2.u2.u1s1.e.9 struct_declarations.long_array.8 struct_declarations.character struct_declarations.long_array.9 struct_declarations.int_ptr_ptr.*int_ptr_ptr struct_declarations.s2.u2.u1s1.func struct_declarations.s2.u2.u1s2.array_ptr struct_declarations.s2.u2.f struct_declarations.s2.u2.u1s1.foo struct_declarations.s2.u2.u1s1 struct_declarations.s2.u2.u1s2.array_ptr.0 struct_declarations.char_ptr struct_declarations.s2.u2.u1s2 struct_declarations.s2.u2.u1s2.array_ptr.1 struct_declarations.int_ptr_ptr struct_declarations.s2 struct_declarations.long_array struct_declarations.s2.g struct_declarations.s2.i.0 struct_declarations.s2.h struct_declarations.s2.i.1 struct_declarations.s2.i struct_declarations.s2.i.2}}

# Step over "weird->func_ptr = nothing;"
gdb_cmd "step"

# Test: c_variable-5.9
# Desc: check that func_ptr changed
gdbtk_test c_variable-5.9 {check that func_ptr changed} {
  check_update
} {struct_declarations.func_ptr {struct_declarations.s2.i.3 struct_declarations.func_ptr_ptr struct_declarations.s2.i.4 struct_declarations.s2.i.5 struct_declarations.s2.i.6 struct_declarations.func_ptr struct_declarations.s2.i.7 struct_declarations.s2.i.8 struct_declarations.s2.i.9 struct_declarations.s2.u2.u1s1.d struct_declarations.func_ptr_struct struct_declarations.s2.u2.u1s1.e struct_declarations.u1 struct_declarations.char_ptr.*char_ptr struct_declarations.long_int struct_declarations.s2.u2.u1s2.func struct_declarations.integer struct_declarations.s2.u2 struct_declarations.s2.u2.u1s1.e.0 struct_declarations.s2.u2.u1s1.e.1 struct_declarations.long_array.0 struct_declarations.s2.u2.u1s1.e.2 struct_declarations.long_array.1 struct_declarations.u1.a struct_declarations.s2.u2.u1s1.e.3 struct_declarations.long_array.2 struct_declarations.u1.b struct_declarations.s2.u2.u1s1.e.4 struct_declarations.long_array.3 struct_declarations.u1.c struct_declarations.s2.u2.u1s1.e.5 struct_declarations.long_array.4 struct_declarations.u1.d struct_declarations.u1.b.*b struct_declarations.int_ptr_ptr.*int_ptr_ptr.**int_ptr_ptr struct_declarations.s2.u2.u1s1.e.6 struct_declarations.long_array.5 struct_declarations.s2.u2.u1s1.e.7 struct_declarations.long_array.6 struct_declarations.s2.u2.u1s1.e.8 struct_declarations.long_array.7 struct_declarations.s2.u2.u1s1.e.9 struct_declarations.long_array.8 struct_declarations.character struct_declarations.long_array.9 struct_declarations.int_ptr_ptr.*int_ptr_ptr struct_declarations.s2.u2.u1s1.func struct_declarations.s2.u2.u1s2.array_ptr struct_declarations.s2.u2.f struct_declarations.s2.u2.u1s1.foo struct_declarations.s2.u2.u1s1 struct_declarations.s2.u2.u1s2.array_ptr.0 struct_declarations.char_ptr struct_declarations.s2.u2.u1s2 struct_declarations.s2.u2.u1s2.array_ptr.1 struct_declarations.int_ptr_ptr struct_declarations.s2 struct_declarations.long_array struct_declarations.s2.g struct_declarations.s2.i.0 struct_declarations.s2.h struct_declarations.s2.i.1 struct_declarations.s2.i struct_declarations.s2.i.2}}

# Delete all variables
delete_all_variables

# Step over all lines:
# ...
#   psnp = &snp0;
for {set i 0} {$i < 43} {incr i} {
  gdb_cmd "step"
}

# Test: c_variable-5.10
# Desc: create psnp->char_ptr
gdbtk_test c_variable-5.10 {create psnp->char_ptr} {
  create_variable psnp->char_ptr
} {0}

# Test: c_variable-5.11
# Desc: children of psnp->char_ptr
gdbtk_test c_variable-5.11 {children of psnp->char_ptr} {
  get_children psnp->char_ptr
} {*psnp->char_ptr}

# Test: c_variable-5.12
# Desc: number of children of psnp->char_ptr
gdbtk_test c_variable-5.12 {number of children of psnp->char_ptr} {
  $var(psnp->char_ptr) numChildren
} {1}

# Test: c_variable-5.13
# Desc: children of *(psnp->char_ptr)
gdbtk_test c_variable-5.13 {children of *(psnp->char_ptr)} {
  get_children psnp->char_ptr.*psnp->char_ptr
} {**psnp->char_ptr}

# Test: c_variable-5.14
# Desc: number of children of *(psnp->char_ptr)
gdbtk_test c_variable-5.14 {number of children of *(psnp->char_ptr)} {
  $var(psnp->char_ptr.*psnp->char_ptr) numChildren
} {1}

# Test: c_variable-5.15
# Desc: children of *(*(psnp->char_ptr))
gdbtk_test c_variable-5.15 {children of *(*(psnp->char_ptr))} {
  get_children psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr
} {***psnp->char_ptr}

# Test: c_variable-5.16
# Desc: number of children of *(*(psnp->char_ptr))
gdbtk_test c_variable-5.16 {number of children of *(*(psnp->char_ptr))} {
  $var(psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr) numChildren
} {1}

# Test: c_variable-5.17
# Desc: children of *(*(*(psnp->char_ptr)))
gdbtk_test c_variable-5.17 {children of *(*(*(psnp->char_ptr)))} {
  get_children psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr
} {****psnp->char_ptr}

# Test: c_variable-5.18
# Desc: number of children of *(*(*(psnp->char_ptr)))
gdbtk_test c_variable-5.18 {number of children of *(*(*(psnp->char_ptr)))} {
  $var(psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr) numChildren
} {1}

# Test: c_variable-5.19
# Desc: create psnp->long_ptr
gdbtk_test c_variable-5.19 {create psnp->long_ptr} {
  create_variable psnp->long_ptr
} {0}

# Test: c_variable-5.20
# Desc: children of psnp->long_ptr
gdbtk_test c_variable-5.20 {children of psnp->long_ptr} {
  get_children psnp->long_ptr
} {*psnp->long_ptr}

# Test: c_variable-5.21
# Desc: number of children of psnp->long_ptr
gdbtk_test c_variable-5.21 {number of children of psnp->long_ptr} {
  $var(psnp->long_ptr) numChildren
} {1}

# Test: c_variable-5.22
# Desc: children of *(psnp->long_ptr)
gdbtk_test c_variable-5.22 {children of *(psnp->long_ptr)} {
  get_children psnp->long_ptr.*psnp->long_ptr
} {**psnp->long_ptr}

# Test: c_variable-5.23
# Desc: number of children of *(psnp->long_ptr)
gdbtk_test c_variable-5.23 {number of children of *(psnp->long_ptr)} {
  $var(psnp->long_ptr.*psnp->long_ptr) numChildren
} {1}

# Test: c_variable-5.24
# Desc: children of *(*(psnp->long_ptr))
gdbtk_test c_variable-5.24 {children of *(*(psnp->long_ptr))} {
  get_children psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr
} {***psnp->long_ptr}

# Test: c_variable-5.25
# Desc: number of children of *(*(psnp->long_ptr))
gdbtk_test c_variable-5.25 {number of children of *(*(psnp->long_ptr))} {
  $var(psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr) numChildren
} {1}

# Test: c_variable-5.26
# Desc: children of *(*(*(psnp->long_ptr)))
gdbtk_test c_variable-5.26 {children of *(*(*(psnp->long_ptr)))} {
  get_children psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr
} {****psnp->long_ptr}

# Test: c_variable-5.27
# Desc: number of children of *(*(*(psnp->long_ptr)))
gdbtk_test c_variable-5.27 {number of children of *(*(*(psnp->long_ptr)))} {
  $var(psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr) numChildren
} {1}

# Test: c_variable-5.28
# Desc: children of *(*(*(*(psnp->long_ptr))))
gdbtk_test c_variable-5.29 {children of *(*(*(*(psnp->long_ptr))))} {
  get_children psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr.****psnp->long_ptr
} {}

# Test: c_variable-5.29
# Desc: number of children of *(*(*(*(psnp->long_ptr))))
gdbtk_test c_variable-5.29 {number of children of *(*(*(*(psnp->long_ptr))))} {
  $var(psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr.****psnp->long_ptr) numChildren
} {0}

# Test: c_variable-5.30
# Desc: create psnp->ptrs
gdbtk_test c_variable-5.30 {create psnp->ptrs} {
  create_variable psnp->ptrs
} {0}

# Test: c_variable-5.31
# Desc: children of psnp->ptrs
gdbtk_test c_variable-5.31 {children of psnp->ptrs} {
  get_children psnp->ptrs
} {0 1 2}

# Test: c_variable-5.32
# Desc: number of children of psnp->ptrs
gdbtk_test c_variable-5.32 {number of children of psnp->ptrs} {
  $var(psnp->ptrs) numChildren
} {3}

# Test: c_variable-5.33
# Desc: children of psnp->ptrs[0]
gdbtk_test c_variable-5.33 {children of psnp->ptrs[0]} {
  get_children psnp->ptrs.0
} {char_ptr long_ptr ptrs next}

# Test: c_variable-5.34
# Desc: number of children of psnp->ptrs[0]
gdbtk_test c_variable-5.34 {number of children of psnp->ptrs[0]} {
  $var(psnp->ptrs.0) numChildren
} {4}

# Test: c_variable-5.35
# Desc: children of psnp->ptrs[0]->next
gdbtk_test c_variable-5.35 {children of psnp->ptrs.0.next} {
  get_children psnp->ptrs.0.next
} {char_ptr long_ptr ptrs next}

# Test: c_variable-5.36
# Desc: number of children of psnp->ptrs[0]->next
gdbtk_test c_variable-5.36 {number of children of psnp->ptrs[0]->next} {
  $var(psnp->ptrs.0.next) numChildren
} {4}

# Test: c_variable-5.37
# Desc: children of psnp->ptrs[0]->next->char_ptr
gdbtk_test c_variable-5.37 {children of psnp->ptrs[0]->next->char_ptr} {
  get_children psnp->ptrs.0.next.char_ptr
} {*char_ptr}

# Test: c_variable-5.38
# Desc: number of children of psnp->ptrs[0]->next->char_ptr
gdbtk_test c_variable-5.38 {number of children of psnp->ptrs[0]->next->char_ptr} {
  $var(psnp->ptrs.0.next.char_ptr) numChildren
} {1}

# Test: c_variable-5.39
# Desc: children of *psnp->ptrs[0]->next->char_ptr
gdbtk_test c_variable-5.39 {children of *psnp->ptrs[0]->next->char_ptr} {
  get_children psnp->ptrs.0.next.char_ptr.*char_ptr
} {**char_ptr}

# Test: c_variable-5.40
# Desc: number of children of *psnp->ptrs[0]->next->char_ptr
gdbtk_test c_variable-5.40 {number of children of *psnp->ptrs[0]->next->char_ptr} {
  $var(psnp->ptrs.0.next.char_ptr.*char_ptr) numChildren
} {1}

# Test: c_variable-5.41
# Desc: children of **psnp->ptrs[0]->next->char_ptr
gdbtk_test c_variable-5.41 {children of **psnp->ptrs[0]->next->char_ptr} {
  get_children psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr
} {***char_ptr}

# Test: c_variable-5.42
# Desc: number of children of **psnp->ptrs[0]->next->char_ptr
gdbtk_test c_variable-5.42 {number of children of **psnp->ptrs[0]->next->char_ptr} {
  $var(psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr) numChildren
} {1}

# Test: c_variable-5.43
# Desc: children of ***psnp->ptrs[0]->next->char_ptr
gdbtk_test c_variable-5.43 {children of ***psnp->ptrs[0]->next->char_ptr} {
  get_children psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr
} {****char_ptr}

# Test: c_variable-5.44
# Desc: number of children of ***psnp->ptrs[0]->next->char_ptr
gdbtk_test c_variable-5.44 {number of children of ***psnp->ptrs[0]->next->char_ptr} {
  $var(psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr) numChildren
} {1}

# Test: c_variable-5.45
# Desc: children of psnp->ptrs[0]->next->next
gdbtk_test c_variable-5.45 {children of psnp->ptrs[0]->next->next} {
  get_children psnp->ptrs.0.next.next
} {char_ptr long_ptr ptrs next}

# Test: c_variable-5.46
# Desc: children of psnp->ptrs[0]->next->next->ptrs
gdbtk_test c_variable-5.46 {children of psnp->ptrs[0]->next->next->ptrs} {
  get_children psnp->ptrs.0.next.next.ptrs
} {0 1 2}

#  Step over "snp0.char_ptr = &b3;"
gdb_cmd "step"

# Test: c_variable-5.47
# Desc: check that psnp->char_ptr (and [0].char_ptr) changed
gdbtk_test c_variable-5.47 {check that psnp->char_ptr (and [0].char_ptr) changed} {
  check_update
} {{psnp->ptrs.0.char_ptr {psnp->char_ptr psnp->char_ptr.*psnp->char_ptr psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr.****psnp->char_ptr}} {psnp->ptrs.0.next psnp->ptrs.0.next.ptrs psnp->ptrs.0.next.next psnp->ptrs.0.next.next.char_ptr psnp->ptrs.0.next.next.long_ptr psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr.****psnp->char_ptr psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr psnp->ptrs.0.next.char_ptr psnp->ptrs.0.next.long_ptr psnp->ptrs.0.next.next.ptrs psnp->ptrs.0.next.char_ptr.*char_ptr psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr.****psnp->long_ptr psnp->ptrs.0.next.next.next psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr psnp->char_ptr.*psnp->char_ptr psnp->ptrs.0.next.next.ptrs.0 psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr psnp->long_ptr.*psnp->long_ptr psnp->ptrs.0.next.next.ptrs.1 psnp->ptrs.0.next.next.ptrs.2 psnp->ptrs.0.char_ptr psnp->ptrs.0.long_ptr psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr.****char_ptr psnp->ptrs.0.ptrs psnp->ptrs.0 psnp->ptrs.1 psnp->ptrs.2 psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr}}

#  Step over "snp1.char_ptr = &c3;"
gdb_cmd "step"

# Test: c_variable-5.48
# Desc: check that psnp->next->char_ptr (and [1].char_ptr) changed
gdbtk_test c_variable-5.48 {check that psnp->next->char_ptr (and [1].char_ptr) changed} {
  check_update
} {{{psnp->ptrs.0.next.char_ptr psnp->ptrs.0.next.char_ptr.*char_ptr psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr.****char_ptr}} {psnp->ptrs.0.next psnp->ptrs.0.next.ptrs psnp->ptrs.0.next.next psnp->ptrs.0.next.next.char_ptr psnp->ptrs.0.next.next.long_ptr psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr.****psnp->char_ptr psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr psnp->ptrs.0.next.char_ptr psnp->ptrs.0.next.long_ptr psnp->ptrs.0.next.next.ptrs psnp->ptrs.0.next.char_ptr.*char_ptr psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr.****psnp->long_ptr psnp->ptrs.0.next.next.next psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr psnp->char_ptr.*psnp->char_ptr psnp->ptrs.0.next.next.ptrs.0 psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr psnp->long_ptr.*psnp->long_ptr psnp->ptrs.0.next.next.ptrs.1 psnp->ptrs.0.next.next.ptrs.2 psnp->ptrs.0.char_ptr psnp->ptrs.0.long_ptr psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr.****char_ptr psnp->ptrs.0.ptrs psnp->ptrs.0 psnp->ptrs.1 psnp->ptrs.2 psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr}}

#  Step over "snp2.char_ptr = &a3;"
gdb_cmd "step"

# Test: c_variable-5.49
# Desc: check that psnp->next->next->char_ptr (and [2].char_ptr) changed
gdbtk_test c_variable-5.49 {heck that psnp->next->next->char_ptr (and [2].char_ptr) changed} {
  check_update
} {psnp->ptrs.0.next.next.char_ptr {psnp->ptrs.0.next psnp->ptrs.0.next.ptrs psnp->ptrs.0.next.next psnp->ptrs.0.next.next.char_ptr psnp->ptrs.0.next.next.long_ptr psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr.****psnp->char_ptr psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr psnp->ptrs.0.next.char_ptr psnp->ptrs.0.next.long_ptr psnp->ptrs.0.next.next.ptrs psnp->ptrs.0.next.char_ptr.*char_ptr psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr.****psnp->long_ptr psnp->ptrs.0.next.next.next psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr psnp->char_ptr.*psnp->char_ptr psnp->ptrs.0.next.next.ptrs.0 psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr psnp->long_ptr.*psnp->long_ptr psnp->ptrs.0.next.next.ptrs.1 psnp->ptrs.0.next.next.ptrs.2 psnp->ptrs.0.char_ptr psnp->ptrs.0.long_ptr psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr.****char_ptr psnp->ptrs.0.ptrs psnp->ptrs.0 psnp->ptrs.1 psnp->ptrs.2 psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr}}

#  Step over "snp0.long_ptr = &y3;"
gdb_cmd "step"

# Test: c_variable-5.50
# Desc: check that psnp->long_ptr (and [0].long_ptr) changed
gdbtk_test c_variable-5.50 {check that psnp->long_ptr (and [0].long_ptr) changed} {
  check_update
} {{psnp->ptrs.0.long_ptr {psnp->long_ptr psnp->long_ptr.*psnp->long_ptr psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr.****psnp->long_ptr}} {psnp->ptrs.0.next psnp->ptrs.0.next.ptrs psnp->ptrs.0.next.next psnp->ptrs.0.next.next.char_ptr psnp->ptrs.0.next.next.long_ptr psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr.****psnp->char_ptr psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr psnp->ptrs.0.next.char_ptr psnp->ptrs.0.next.long_ptr psnp->ptrs.0.next.next.ptrs psnp->ptrs.0.next.char_ptr.*char_ptr psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr.****psnp->long_ptr psnp->ptrs.0.next.next.next psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr psnp->char_ptr.*psnp->char_ptr psnp->ptrs.0.next.next.ptrs.0 psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr psnp->long_ptr.*psnp->long_ptr psnp->ptrs.0.next.next.ptrs.1 psnp->ptrs.0.next.next.ptrs.2 psnp->ptrs.0.char_ptr psnp->ptrs.0.long_ptr psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr.****char_ptr psnp->ptrs.0.ptrs psnp->ptrs.0 psnp->ptrs.1 psnp->ptrs.2 psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr}}

#  Step over "snp1.long_ptr = &x3;"
gdb_cmd "step"

# Test: c_variable-5.51
# Desc: check that psnp->next->long_ptr (and [1].long_ptr) changed
gdbtk_test c_variable-5.51 {check that psnp->next->long_ptr (and [1].long_ptr) changed} {
  check_update
} {psnp->ptrs.0.next.long_ptr {psnp->ptrs.0.next psnp->ptrs.0.next.ptrs psnp->ptrs.0.next.next psnp->ptrs.0.next.next.char_ptr psnp->ptrs.0.next.next.long_ptr psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr.****psnp->char_ptr psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr psnp->ptrs.0.next.char_ptr psnp->ptrs.0.next.long_ptr psnp->ptrs.0.next.next.ptrs psnp->ptrs.0.next.char_ptr.*char_ptr psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr.****psnp->long_ptr psnp->ptrs.0.next.next.next psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr psnp->char_ptr.*psnp->char_ptr psnp->ptrs.0.next.next.ptrs.0 psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr psnp->long_ptr.*psnp->long_ptr psnp->ptrs.0.next.next.ptrs.1 psnp->ptrs.0.next.next.ptrs.2 psnp->ptrs.0.char_ptr psnp->ptrs.0.long_ptr psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr.****char_ptr psnp->ptrs.0.ptrs psnp->ptrs.0 psnp->ptrs.1 psnp->ptrs.2 psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr}}

#  Step over "snp2.long_ptr = &z3;"
gdb_cmd "step"

# Test: c_variable-5.52
# Desc: check that psnp->next->next->long_ptr (and [2].long_ptr) changed
gdbtk_test c_variable-5.52 {check that psnp->next->next->long_ptr (and [2].long_ptr) changed} {
  check_update
} {psnp->ptrs.0.next.next.long_ptr {psnp->ptrs.0.next psnp->ptrs.0.next.ptrs psnp->ptrs.0.next.next psnp->ptrs.0.next.next.char_ptr psnp->ptrs.0.next.next.long_ptr psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr.****psnp->char_ptr psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr psnp->ptrs.0.next.char_ptr psnp->ptrs.0.next.long_ptr psnp->ptrs.0.next.next.ptrs psnp->ptrs.0.next.char_ptr.*char_ptr psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr.****psnp->long_ptr psnp->ptrs.0.next.next.next psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr psnp->char_ptr.*psnp->char_ptr psnp->ptrs.0.next.next.ptrs.0 psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr psnp->long_ptr.*psnp->long_ptr psnp->ptrs.0.next.next.ptrs.1 psnp->ptrs.0.next.next.ptrs.2 psnp->ptrs.0.char_ptr psnp->ptrs.0.long_ptr psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr.****char_ptr psnp->ptrs.0.ptrs psnp->ptrs.0 psnp->ptrs.1 psnp->ptrs.2 psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr}}

# Test: c_variable-5.53
# Desc: names of editable variables
gdbtk_test c_variable-5.53 {names of editable variables} {
  editable_variables
} {{psnp->ptrs.0.next psnp->ptrs.0.next.next psnp->ptrs.0.next.next.char_ptr psnp->ptrs.0.next.next.long_ptr psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr.****psnp->char_ptr psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr psnp->ptrs.0.next.char_ptr psnp->ptrs.0.next.long_ptr psnp->ptrs.0.next.char_ptr.*char_ptr psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr.****psnp->long_ptr psnp->ptrs.0.next.next.next psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr psnp->char_ptr.*psnp->char_ptr psnp->ptrs.0.next.next.ptrs.0 psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr psnp->long_ptr.*psnp->long_ptr psnp->ptrs.0.next.next.ptrs.1 psnp->ptrs.0.next.next.ptrs.2 psnp->ptrs.0.char_ptr psnp->ptrs.0.long_ptr psnp->char_ptr psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr.****char_ptr psnp->long_ptr psnp->ptrs.0 psnp->ptrs.1 psnp->ptrs.2 psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr} {psnp->ptrs.0.next.ptrs psnp->ptrs.0.next.next.ptrs psnp->ptrs psnp->ptrs.0.ptrs}}

#####       #####
#               #
# Display tests #
#               #
#####       #####

delete_all_variables

# Test: c_variable-6.1
# Desc: create variable bar
gdbtk_test c_variable-6.1 {create variable bar} {
  create_variable bar
} {0}

# Test: c_variable-6.2
# Desc: type of variable bar
gdbtk_test c_variable-6.2 {type of variable bar} {
  $var(bar) type
} {int}

# Test: c_variable-6.3
# Desc: format of variable bar
gdbtk_test c_variable-6.3 {format of variable bar} {
  $var(bar) format
} {natural}

# Test: c_variable-6.4
# Desc: value of variable bar
gdbtk_test c_variable-6.4 {value of variable bar} {
  value bar d
} {ok}

# Test: c_variable-6.5
# Desc: change format of bar to hex
gdbtk_test c_variable-6.5 {change format of bar to hex} {
  $var(bar) format hex
  $var(bar) format
} {hexadecimal}

# Test: c_variable-6.6
# Desc: value of bar with new format
gdbtk_test c_variable-6.6 {value of bar with new format} {
  value bar x
} {ok}

# Test: c_variable-6.7
# Desc: change value of bar
gdbtk_test c_variable-6.7 {change value of bar} {
  $var(bar) value 3
  value bar x
} {ok}

# Test: c_variable-6.8
# Desc: check new value of bar
gdbtk_test c_variable-6.8 {change value of bar} {
  $var(bar) format decimal
  $var(bar) value
} {3}

delete_variable bar

# Test: c_variable-6.11
# Desc: create variable foo
gdbtk_test c_variable-6.11 {create variable foo} {
  create_variable foo
} {0}

# Test: c_variable-6.12
# Desc: type of variable foo
gdbtk_test c_variable-6.12 {type of variable foo} {
  $var(foo) type
} {int *}

# Test: c_variable-6.13
# Desc: format of variable foo
gdbtk_test c_variable-6.13 {format of variable foo} {
  $var(foo) format
} {natural}

# Test: c_variable-6.14
# Desc: value of variable foo
gdbtk_test c_variable-6.14 {value of variable foo} {
  value foo x
} {ok}

# Test: c_variable-6.15
# Desc: change format of var to octal
gdbtk_test c_variable-6.15 {change format of foo to octal} {
  $var(foo) format octal
  $var(foo) format
} {octal}

# Test: c_variable-6.16
# Desc: value of foo with new format
gdbtk_test c_variable-6.16 {value of foo with new format} {
  value foo o
} {ok}

# Test: c_variable-6.17
# Desc: change value of foo
gdbtk_test c_variable-6.17 {change value of foo} {
  $var(foo) value 3
  value foo o
} {ok}

# Test: c_variable-6.18
# Desc: check new value of foo
gdbtk_test c_variable-6.18 {check new value of foo} {
  $var(foo) format decimal
  $var(foo) value
} {3}

delete_variable foo

# Test: c_variable-6.21
# Desc: create variable weird and children
gdbtk_test c_variable-6.21 {create variable foo} {
  if {![create_variable weird]} {
    lsort [get_children weird]
  }
} {char_ptr character func_ptr func_ptr_ptr func_ptr_struct int_ptr_ptr integer long_array long_int s2 u1}

# Test: c_variable-6.22
# Desc: type of weird and children
gdbtk_test c_variable-6.22 {type of weird and children} {
  set types {}
  foreach v [lsort [array names var]] {
    lappend types [$var($v) type]
  }

  set types
} {{weird_struct *} {char *} char {void (*)(void)} {struct _struct_decl *(*)(int, char *, long int)} {struct _struct_decl (*)(int, char *, long int)} {int **} int {long int [10]} {long int} struct union}

# Test: c_variable-6.23
# Desc: change format of weird.func_ptr and weird.func_ptr_ptr
gdbtk_test c_variable-6.23 {change format of weird.func_ptr and weird.func_ptr_ptr} {
  $var(weird.func_ptr) format hexadecimal
  $var(weird.func_ptr_ptr) format hexadecimal
  set result {}
  lappend result [$var(weird.func_ptr) format]
  lappend result [$var(weird.func_ptr_ptr) format]
  set result
} {hexadecimal hexadecimal}

# Test: c_variable-6.24
# Desc: format of weird and children
gdbtk_test c_variable-6.24 {format of weird and children} {
  set formats {}
  foreach v [lsort [array names var]] {
    lappend formats [$var($v) format]
  }

  set formats
} {natural natural natural hexadecimal hexadecimal natural natural natural natural natural natural natural}

# Test: c_variable-6.25
# Desc: value of weird and children
gdbtk_test c_variable-6.25 {value of weird and children} {
  set values {}
  foreach v [lsort [array names var]] f [list x "" "" x x x x d d d d d] {
    lappend values [value $v $f]
  }

  set values
} {ok ok ok ok ok ok ok ok weird.long_array ok weird.s2 weird.u1}

# Test: c_variable-6.26
# Desc: change format of weird and children to octal
gdbtk_test c_variable-6.26 {change format of weird and children to octal} {
  set formats {}
  foreach v [lsort [array names var]] {
    $var($v) format octal
    lappend formats [$var($v) format]
  }

  set formats
} {octal octal octal octal octal octal octal octal octal octal octal octal}

# Test: c_variable-6.27
# Desc: value of weird and children with new format
gdbtk_test c_variable-6.27 {value of foo with new format} {
  set values {}
  foreach v [lsort [array names var]] {
    lappend values [value $v o]
  }

  set values
} {ok ok ok ok ok ok ok ok weird.long_array ok weird.s2 weird.u1}

# Test: c_variable-6.30
# Desc: create more children of weird
gdbtk_test c_variable-6.30 {create more children of weird} {
  foreach v [array names var] {
    get_children $v
  }

  # Do it twice to get more children
  foreach v [array names var] {
    get_children $v
  }

  lsort [array names var]
} {weird weird.char_ptr weird.char_ptr.*char_ptr weird.character weird.func_ptr weird.func_ptr_ptr weird.func_ptr_struct weird.int_ptr_ptr weird.int_ptr_ptr.*int_ptr_ptr weird.int_ptr_ptr.*int_ptr_ptr.**int_ptr_ptr weird.integer weird.long_array weird.long_array.0 weird.long_array.1 weird.long_array.2 weird.long_array.3 weird.long_array.4 weird.long_array.5 weird.long_array.6 weird.long_array.7 weird.long_array.8 weird.long_array.9 weird.long_int weird.s2 weird.s2.g weird.s2.h weird.s2.i weird.s2.i.0 weird.s2.i.1 weird.s2.i.2 weird.s2.i.3 weird.s2.i.4 weird.s2.i.5 weird.s2.i.6 weird.s2.i.7 weird.s2.i.8 weird.s2.i.9 weird.s2.u2 weird.s2.u2.f weird.s2.u2.u1s1 weird.s2.u2.u1s2 weird.u1 weird.u1.a weird.u1.b weird.u1.b.*b weird.u1.c weird.u1.d}

# Test: c_variable-6.31
# Desc: check that all children of weird change
#       Ok, obviously things like weird.s2 and weird.u1 will not change!
gdbtk_test c_variable-6.31 {check that all children of weird change (ops, we are now reporting array names as changed in this case - seems harmless though)} {
  $var(weird) value 0x2121
  check_update
} {{{weird weird.integer weird.character weird.char_ptr weird.char_ptr.*char_ptr weird.long_int weird.int_ptr_ptr weird.int_ptr_ptr.*int_ptr_ptr weird.long_array.0 weird.long_array.1 weird.long_array.2 weird.long_array.3 weird.long_array.4 weird.long_array.5 weird.long_array.6 weird.long_array.7 weird.long_array.8 weird.long_array.9 weird.func_ptr weird.func_ptr_struct weird.func_ptr_ptr weird.u1.a weird.u1.b weird.u1.c weird.u1.d weird.s2.u2.f weird.s2.g weird.s2.h weird.s2.i.0 weird.s2.i.1 weird.s2.i.2 weird.s2.i.3 weird.s2.i.4 weird.s2.i.5 weird.s2.i.6 weird.s2.i.7 weird.s2.i.8 weird.s2.i.9}} {weird.char_ptr weird.s2.u2.f weird.int_ptr_ptr.*int_ptr_ptr.**int_ptr_ptr weird.s2.g weird.s2.h weird.s2.i weird.func_ptr_ptr weird.func_ptr weird.s2.u2 weird.int_ptr_ptr weird.long_int weird.character weird.s2.u2.u1s1 weird.s2.u2.u1s2 weird.long_array.0 weird.u1.a weird.long_array.1 weird.s2 weird.func_ptr_struct weird.u1.b weird.long_array.2 weird.long_array weird.u1.c weird.long_array.3 weird.u1.d weird.long_array.4 weird.long_array.5 weird.s2.i.0 weird.long_array.6 weird.s2.i.1 weird.long_array.7 weird.s2.i.2 weird.long_array.8 weird.s2.i.3 weird.long_array.9 weird.s2.i.4 weird.integer weird.s2.i.5 weird.s2.i.6 weird.s2.i.7 weird.s2.i.8 weird.int_ptr_ptr.*int_ptr_ptr weird.s2.i.9 weird.char_ptr.*char_ptr weird.u1 weird.u1.b.*b}}

delete_variable weird

#####               #####
#                       #
# Special Display Tests #
#                       #
#####               #####

# Stop in "do_special_tests"
gdb_cmd "break do_special_tests"
gdb_cmd "continue"

# Test: c_variable-7.1
# Desc: stop in do_special_tests
gdbtk_test c_variable-7.1 {stop in do_special_tests} {
  lindex [gdb_loc] 1
} {do_special_tests}

# Test: c_variable-7.10
# Desc: create union u
gdbtk_test c_variable-7.10 {create union u} {
  create_variable u
} {0}

# Test: c_variable-7.11
# Desc: value of u
gdbtk_test c_variable-7.11 {value of u} {
  $var(u) value
} {{...}}

# Test: c_variable-7.12
# Desc: type of u
gdbtk_test c_variable-7.12 {type of u} {
  $var(u) type
} {union named_union}

# Test: c_variable-7.13
# Desc: is u editable
gdbtk_test c_variable-7.13 {is u editable} {
  $var(u) editable
} {0}

# Test: c_variable-7.14
# Desc: number of children of u
gdbtk_test c_variable-7.14 {number of children of u} {
  $var(u) numChildren
} {2}

# Test: c_variable-7.15
# Desc: children of u
gdbtk_test c_variable-7.15 {children of u} {
  get_children u
} {integer char_ptr}

# Test: c_variable-7.20
# Desc: create anonu
gdbtk_test c_variable-7.20 {create anonu} {
  create_variable anonu
} {0}

# Test: c_variable-7.21
# Desc: value of anonu
gdbtk_test c_variable-7.21 {value of anonu} {
  $var(anonu) value
} {{...}}

# Test: c_variable-7.22
# Desc: type of anonu
gdbtk_test c_variable-7.22 {type of anonu} {
  $var(anonu) type
} {union}

# Test: c_variable-7.23
# Desc: is anonu editable
gdbtk_test c_variable-7.23 {is anonu editable} {
  $var(anonu) editable
} {0}

# Test: c_variable-7.24
# Desc: number of children of anonu
gdbtk_test c_variable-7.24 {number of children of anonu} {
  $var(anonu) numChildren
} {3}

# Test: c_variable-7.25
# Desc: children of anonu
gdbtk_test c_variable-7.25 {children of anonu} {
  get_children anonu
} {a b c}

# Test: c_variable-7.30
# Desc: create struct s
gdbtk_test c_variable-7.30 {create struct s} {
  create_variable s
} {0}

# Test: c_variable-7.31
# Desc: value of s
gdbtk_test c_variable-7.31 {value of s} {
  $var(s) value
} {{...}}

# Test: c_variable-7.32
# Desc: type of s
gdbtk_test c_variable-7.32 {type of s} {
  $var(s) type
} {struct _simple_struct}

# Test: c_variable-7.33
# Desc: is s editable
gdbtk_test c_variable-7.33 {is s editable} {
  $var(s) editable
} {0}

# Test: c_variable-7.34
# Desc: number of children of s
gdbtk_test c_variable-7.34 {number of children of s} {
  $var(s) numChildren
} {6}

# Test: c_variable-7.35
# Desc: children of s
gdbtk_test c_variable-7.35 {children of s} {
  get_children s
} {integer unsigned_integer character signed_character char_ptr array_of_10}

# Test: c_variable-7.40
# Desc: create anons
gdbtk_test c_variable-7.40 {create anons} {
  create_variable anons
} {0}

# Test: c_variable-7.41
# Desc: value of anons
gdbtk_test c_variable-7.41 {value of anons} {
  $var(anons) value
} {{...}}

# Test: c_variable-7.42
# Desc: type of anons
gdbtk_test c_variable-7.42 {type of anons} {
  $var(anons) type
} {struct}

# Test: c_variable-7.43
# Desc: is anons editable
gdbtk_test c_variable-7.43 {is anons editable} {
  $var(anons) editable
} {0}

# Test: c_variable-7.44
# Desc: number of children of anons
gdbtk_test c_variable-7.44 {number of children of anons} {
  $var(anons) numChildren
} {3}

# Test: c_variable-7.45
# Desc: children of anons
gdbtk_test c_variable-7.45 {children of anons} {
  get_children anons
} {a b c}

# Test: c_variable-7.50
# Desc: create enum e
gdbtk_test c_variable-7.50 {create enum e} {
  create_variable e
} {0}

# Test: c_variable-7.51
# Desc: value of e
gdbtk_test c_variable-7.51 {value of e} {
  $var(e) value bar
  $var(e) value
} {bar}

# Test: c_variable-7.52
# Desc: type of e
gdbtk_test c_variable-7.52 {type of e} {
  $var(e) type
} {enum foo}

# Test: c_variable-7.53
# Desc: is e editable
gdbtk_test c_variable-7.53 {is e editable} {
  $var(e) editable
} {1}

# Test: c_variable-7.54
# Desc: number of children of e
gdbtk_test c_variable-7.54 {number of children of e} {
  $var(e) numChildren
} {0}

# Test: c_variable-7.55
# Desc: children of e
gdbtk_test c_variable-7.55 {children of e} {
  get_children e
} {}

# Test: c_variable-7.60
# Desc: create anone
gdbtk_test c_variable-7.60 {create anone} {
  create_variable anone
} {0}

# Test: c_variable-7.61
# Desc: value of anone
gdbtk_test c_variable-7.61 {value of e} {
  $var(e) value bar
  $var(e) value
} {bar}

# Test: c_variable-7.62
# Desc: type of e
gdbtk_test c_variable-7.62 {type of e} {
  $var(e) type
} {enum foo}

# Test: c_variable-7.63
# Desc: is e editable
gdbtk_test c_variable-7.63 {is e editable} {
  $var(e) editable
} {1}

# Test: c_variable-7.64
# Desc: number of children of e
gdbtk_test c_variable-7.64 {number of children of e} {
  $var(e) numChildren
} {0}

# Test: c_variable-7.65
# Desc: children of e
gdbtk_test c_variable-7.65 {children of e} {
  get_children e
} {}

# Test: c_variable-7.70
# Desc: create anone
gdbtk_test c_variable-7.70 {try to create anone again (duplicate obj name} {
  create_variable anone
} {1}

# Test: c_variable-7.71
# Desc: value of anone
gdbtk_test c_variable-7.71 {value of anone} {
  $var(anone) value A
  $var(anone) value
} {A}

# Test: c_variable-7.72
# Desc: type of anone
gdbtk_test c_variable-7.72 {type of anone} {
  $var(anone) type
} {enum}

# Test: c_variable-7.73
# Desc: is anone editable
gdbtk_test c_variable-7.73 {is anone editable} {
  $var(anone) editable
} {1}

# Test: c_variable-7.74
# Desc: number of children of anone
gdbtk_test c_variable-7.74 {number of children of anone} {
  $var(anone) numChildren
} {0}

# Test: c_variable-7.75
# Desc: children of anone
gdbtk_test c_variable-7.75 {children of anone} {
  get_children anone
} {}

# Record fp
set fp [gdb_cmd "output/x \$fp"]
gdb_cmd {break incr_a}
gdb_cmd {continue}

# Test: c_variable-7.80
# Desc: stop in incr_a
gdbtk_test c_variable-7.80 {stop in incr_a} {
  lindex [gdb_loc] 1
} {incr_a}

# Test: c_variable-7.81
# Desc: Create variables in different scopes
gdbtk_test c_variable-7.81 {create variables in different scopes} {
  set a1 [gdb_variable create -expr a]
  set a2 [gdb_variable create -expr a -frame $fp]

  set vals {}
  lappend vals [$a1 value]
  lappend vals [$a2 value]
  set vals
} {2 1}

#  Exit
#
gdbtk_test_done

#Local Variables:
#mode: tcl
