# file: example.tcl

catch { load ./example.so example}     ;# Unix
catch { load ./example.dll example}    ;# Windows

# Try to set the values of some global variables

set ivar    42
set svar   -31000
set lvar    65537
set uivar   123456
set usvar   61000
set ulvar   654321
set scvar   -13
set ucvar   251
set cvar    "S"
set fvar    3.14159
set dvar    2.1828
set strvar  "Hello World"
set cstrvar "Goodbye"
set iptrvar [new_int 37]
set ptptr [new_Point 37 42]
set name    "Bill"

# Now print out the values of the variables

puts "Variables (values printed from Tcl)"

puts "ivar      = $ivar"
puts "svar      = $svar"
puts "lvar      = $lvar"
puts "uivar     = $uivar"
puts "usvar     = $usvar"
puts "ulvar     = $ulvar"
puts "scvar     = $scvar"
puts "ucvar     = $ucvar"
puts "fvar      = $fvar"
puts "dvar      = $dvar"
puts "cvar      = $cvar"
puts "strvar    = $strvar"
puts "cstrvar   = $cstrvar"
puts "iptrvar   = $iptrvar"
puts "name      = $name"
puts "ptptr     = $ptptr [Point_print $ptptr]"
puts "pt        = $pt [Point_print $pt]"

puts "\nVariables (values printed from C)"

print_vars

puts "\nNow I'm going to try and modify some read only variables";

puts "     Tring to set 'path'";
if { [catch {
    set path "Whoa!"
    puts "Hey, what's going on?!?! This shouldn't work"
}]} {
    puts "Good."
}

puts "     Trying to set 'status'";
if { [catch {
    set status 0
    puts "Hey, what's going on?!?! This shouldn't work"
}]} {
    puts "Good."
}

puts "\nI'm going to try and update a structure variable.\n"

set pt $ptptr

puts "The new value is"
pt_print
puts "You should see the value [Point_print $ptptr]"



