lines(0);
ilib_verbose(0);
ierr = exec('loader.sce', 'errcatch');
if ierr <> 0 then
  disp(lasterror());
  exit(ierr);
end

// Try to set the values of some global variables
ivar_set(42);
svar_set(-31000);
lvar_set(65537);
uivar_set(uint32(123456));
usvar_set(uint16(61000));
ulvar_set(654321);
scvar_set(int8(-13));
ucvar_set(uint8(251));
cvar_set("S");
fvar_set(3.14159);
dvar_set(2.1828);
strvar_set("Hello World");
iptrvar_set(new_int(37));
ptptr_set(new_Point(37,42));
name_set("Bill");

// Now print out the values of the variables
printf("Variables (values printed from Scilab)\n");
printf("ivar      = %i\n", ivar_get());
printf("svar      = %i\n", svar_get());
printf("lvar      = %i\n", lvar_get());
printf("uivar     = %i\n", uivar_get());
printf("usvar     = %i\n", usvar_get());
printf("ulvar     = %i\n", ulvar_get());
printf("scvar     = %i\n", scvar_get());
printf("ucvar     = %i\n", ucvar_get());
printf("fvar      = %f\n", fvar_get());
printf("dvar      = %f\n", dvar_get());
printf("cvar      = %s\n", cvar_get());
printf("strvar    = %s\n", strvar_get());
printf("cstrvar   = %s\n", cstrvar_get());
printf("iptrvar   = %i\n", value_int(iptrvar_get()));
printf("name      = %s\n", name_get());
printf("ptptr     = %s\n", Point_print(ptptr_get()));
printf("pt        = %s\n", Point_print(pt_get()));
printf("status    = %d\n", status_get());

printf("\nVariables (values printed from C)\n");
print_vars()

// Immutable variables
printf("\nNow I''m going to try and modify some read only variables\n");
printf("     Trying to set ''path''\n");
try
    path_set("Whoa!");
    printf("Hey, what''s going on?!?! This shouldn''t work\n");
catch
    printf("Good.\n");
end
printf("     Trying to set ''status''\n");
try
    status_set(0);
    printf("Hey, what''s going on?!?! This shouldn''t work\n");
catch
    printf("Good.\n");
end

// Structure
printf("\nI''m going to try and update a structure variable.\n");
pt_set(ptptr_get());
printf("The new value is %s\n", Point_print(pt_get()));

exit

