// -*- mode: java -*-
// $Id: methcall.njs,v 1.1 2001/07/08 20:20:06 doug Exp $
// http://www.bagley.org/~doug/shootout/
// From David Hedbor
// modified by Aldo Calpini <dada@perl.it> for Win32
function Toggle(start_state) {
this.bool = start_state;
this.value = ToggleValue;
this.activate = ToggleActivate;
}
function ToggleValue () {
return this.bool;
}
function ToggleActivate () {
this.bool = !this.bool;
return this;
}
function NthToggle (start_state, max_counter) {
this.base = Toggle;
this.base(start_state);
this.count_max = max_counter;
this.count = 0;
this.activate = NthToggleActivate;
}
NthToggle.prototype = new Toggle;
function NthToggleActivate () {
if (++this.count >= this.count_max) {
this.bool = !this.bool;
this.count = 0;
}
return this;
}
var n, i;
ARGS = WScript.Arguments;
if(ARGS.length > 0) {
n = parseInt(ARGS.Item(0), "10");
if(n < 1) n = 1;
} else {
n = 1;
}
var val = true;
var toggle = new Toggle(val);
for (i=0; i<n; i++) {
val = toggle.activate().value();
}
WScript.Echo(toggle.value() ? "true" : "false");
val = true;
var ntoggle = new NthToggle(val, 3);
for (i=0; i<n; i++) {
val = ntoggle.activate().value();
}
WScript.Echo(ntoggle.value() ? "true" : "false");