00001 #include <cppscript>
00002
00003 var counter_get(var c) { return c["value"]++; }
00004
00005 var counter(var value)
00006 {
00007 return object("counter").extend
00008 ("value", value)
00009 ("get", counter_get);
00010 }
00011
00012 var multicounter_get(var multicounter, var counter_name)
00013 {
00014 return multicounter["counters"][counter_name]["get"]();
00015 }
00016
00017 void multicounter_set(var multicounter, var counter_name, var value)
00018 {
00019 multicounter["counters"][counter_name] = counter(value);
00020 }
00021
00022 var multicounter()
00023 {
00024 return dispatcher(
00025 object("multicounter").extend
00026 ("counters", map())
00027 ("get_member", multicounter_get)
00028 ("set_member", multicounter_set)
00029 );
00030 }
00031
00032 var script_main(var)
00033 {
00034 var counters = multicounter();
00035 counters["c1"] = 0;
00036 counters["c2"] = 10;
00037 writeln( counters["c1"] );
00038 writeln( counters["c2"] );
00039 writeln( counters["c1"] );
00040 writeln( counters["c2"] );
00041 return 0;
00042 }