#!/usr/local/bin/rune -x # # lvalue storage qualifier as a global import "sys"; import ; alias stdio.File *stdout = stdio.stdout; const int loops = 10000000; project "tests"; class Fubar { # Initializers are only executed once # int x = 233; # Constructors are executed every time # constructor method void doinit() { stdout->show("call init"); /* this.x = 23; would run every time */ } } class Fubar2 { int *p; heap int z = 456; int zz = 457; } # should use /lvalue2/rune_ary.map and rune_fu.map # persist int ary[loops]; persist Fubar fu; int X; # should use /tests/rune_fu2.map # persist shared Fubar fu2; private constructor void ginit() { X = 1; } int main(int ac, char **av) { fubar(); fubar(); fubar(); } void fubar() { int i; persist int j = 4; Fubar2 z; ++j; stdout->show("j should be 5+: ", j); i = z.z; stdout->show("i should be 456: ", i); stdout->show("z.z should be 456: ", z.z); stdout->show("z.zz should be 457: ", z.zz); z.z = 1; stdout->show("z.z should be 1: ", z.z); ary[0] = 1; X = 2; for (i = 0; i < loops; ++i) ary[i] += i; stdout->show("Array is at ", &ary[0]); stdout->show("Array is at ", &ary[i-2]); stdout->show("Array is at ", &ary[i-1]); stdout->show("Array is at ", &ary[i]); stdout->show("Should start at 100: ", ary[100]); stdout->show("Value of x should start at 233: ", fu.x); ++fu.x; }