# file: runme.pl

use example;

# Try to set the values of some global variables

$example::ivar   =  42;
$example::svar   = -31000;
$example::lvar   =  65537;
$example::uivar  =  123456;
$example::usvar  =  61000;
$example::ulvar  =  654321;
$example::scvar  =  -13;
$example::ucvar  =  251;
$example::cvar   =  "S";
$example::fvar   =  3.14159;
$example::dvar   =  2.1828;
$example::strvar =  "Hello World";
$example::iptrvar= example::new_int(37);
$example::ptptr  = example::new_Point(37,42);
$example::name   = "Bill";

# Now print out the values of the variables

print "Variables (values printed from Perl)\n";

print "ivar      = $example::ivar\n";
print "svar      = $example::svar\n";
print "lvar      = $example::lvar\n";
print "uivar     = $example::uivar\n";
print "usvar     = $example::usvar\n";
print "ulvar     = $example::ulvar\n";
print "scvar     = $example::scvar\n";
print "ucvar     = $example::ucvar\n";
print "fvar      = $example::fvar\n";
print "dvar      = $example::dvar\n";
print "cvar      = $example::cvar\n";
print "strvar    = $example::strvar\n";
print "cstrvar   = $example::cstrvar\n";
print "iptrvar   = $example::iptrvar\n";
print "name      = $example::name\n";
print "ptptr     = $example::ptptr", example::Point_print($example::ptptr), "\n";
print "pt        = $example::pt", example::Point_print($example::pt), "\n";

print "\nVariables (values printed from C)\n";

example::print_vars();

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

$example::pt = $example::ptptr;

print "The new value is ";
example::pt_print();
print "You should see the value", example::Point_print($example::ptptr), "\n";


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


print "     Trying to set 'status'\n";
eval { $example::status = 0; };
if (!$@) {
    die("status");
}
print "     get error for 'status'\n";

print "     Trying to set 'path'\n";
eval { $example::path = "Whoa!";};
if (!$@) {
    die("path");
}
print "     get error for 'path'\n";
