/* * SPL - The SPL Programming Language * Copyright (C) 2004, 2005 Clifford Wolf * * 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 * * example42.spl: The hardcore test for 'static' object members */ object Value { var value; method init(v) { value = v; return this; } } object A { static v1 = new Value(42); static v2 = 42; } object B A { } object C { import A; } var a = new A(); var b = new B(); var c = new C(); var list = [ a:a, b:b, c:c, A:A, B:B, C:C ]; function print_all(obj, val) { var out = "$obj $val:"; foreach i (list) { var v1 = list[i].v1.value, v2 = list[i].v2; out ~= (v1 == val ? " " : " !") ~ "${i}1:$v1"; out ~= (v2 == val ? " " : " !") ~ "${i}2:$v2"; } debug out; } var current = 42; print_all("-", 42); foreach i (list) { current++; list[i].v1.value++; list[i].v2++; print_all(i, current); } foreach i (list) { current--; list[i].v1 = new Value(current); list[i].v2 = current; print_all(i, current); }