File Annotation
Not logged in
b6daa1efa1 2012-07-14        kinaba: import util;
b6daa1efa1 2012-07-14        kinaba: import game;
b6daa1efa1 2012-07-14        kinaba: import core.stdc.signal;
b6daa1efa1 2012-07-14        kinaba: import std.c.stdlib;
b6daa1efa1 2012-07-14        kinaba: 
b6daa1efa1 2012-07-14        kinaba: abstract class Output
b6daa1efa1 2012-07-14        kinaba: {
b6daa1efa1 2012-07-14        kinaba: 	void command(char c);
b6daa1efa1 2012-07-14        kinaba: }
b6daa1efa1 2012-07-14        kinaba: 
b6daa1efa1 2012-07-14        kinaba: class NilOutput : Output
b6daa1efa1 2012-07-14        kinaba: {
b6daa1efa1 2012-07-14        kinaba: 	override void command(char c) {}
b6daa1efa1 2012-07-14        kinaba: }
b6daa1efa1 2012-07-14        kinaba: 
b6daa1efa1 2012-07-14        kinaba: class StdOutput : Output
b6daa1efa1 2012-07-14        kinaba: {
b6daa1efa1 2012-07-14        kinaba: 	// Handle SIGINT: force abort and exit.
b6daa1efa1 2012-07-14        kinaba: 	static this()
b6daa1efa1 2012-07-14        kinaba: 	{
b6daa1efa1 2012-07-14        kinaba: 		signal(SIGINT, &sigint);
b6daa1efa1 2012-07-14        kinaba: 	}
b6daa1efa1 2012-07-14        kinaba: 	extern(C) static void sigint(int) {
b6daa1efa1 2012-07-14        kinaba: 		write("A");
b6daa1efa1 2012-07-14        kinaba: 		stdout.flush();
b6daa1efa1 2012-07-14        kinaba: 		exit(0);
b6daa1efa1 2012-07-14        kinaba: 	}
b6daa1efa1 2012-07-14        kinaba: 
b6daa1efa1 2012-07-14        kinaba: 	override void command(char c)
b6daa1efa1 2012-07-14        kinaba: 	{
b6daa1efa1 2012-07-14        kinaba: 		// TODO: optimize redundancy.
b6daa1efa1 2012-07-14        kinaba: 		write(c);
b6daa1efa1 2012-07-14        kinaba: 		stdout.flush();
b6daa1efa1 2012-07-14        kinaba: 	}
b6daa1efa1 2012-07-14        kinaba: }