00001
00002
00003
00004 #include "osl/progress/effect5x3.h"
00005 #include "osl/progress/ml/newProgress.h"
00006 #include "osl/record/csaRecord.h"
00007 #include "osl/state/numEffectState.h"
00008 #include "osl/apply_move/applyMove.h"
00009 #include <stdexcept>
00010 #include <iostream>
00011 #include <iomanip>
00012 #include <cstdlib>
00013 #include <cstdio>
00014 #include <unistd.h>
00015
00016 using namespace osl;
00017 using namespace osl::progress;
00018
00019 void usage(const char *prog)
00020 {
00021 using namespace std;
00022 cerr << "Usage: " << prog << " [-a] csa-filename"
00023 << endl;
00024 exit(1);
00025 }
00026
00027 void show(const char *filename);
00028
00029 bool show_all_states = false;
00030 int main(int argc, char **argv)
00031 {
00032 const char *program_name = argv[0];
00033 bool error_flag = false;
00034
00035
00036 extern int optind;
00037 char c;
00038 while ((c = getopt(argc, argv, "at:f:vh")) != EOF)
00039 {
00040 switch(c)
00041 {
00042 case 'a': show_all_states = true;
00043 break;
00044 default: error_flag = true;
00045 }
00046 }
00047 argc -= optind;
00048 argv += optind;
00049
00050 if (error_flag)
00051 usage(program_name);
00052
00053 progress::ml::NewProgress::setUp();
00054
00055 for (int i=0; i<argc; ++i)
00056 {
00057 show(argv[i]);
00058 }
00059 }
00060
00061 void show(const NumEffectState& state)
00062 {
00063 std::cout << state;
00064 const int progress_black = Effect5x3::makeProgress(BLACK,state);
00065 const int progress_white = Effect5x3::makeProgress(WHITE,state);
00066 std::cout << "black " << progress_black << "\n";
00067 std::cout << "white " << progress_white << "\n";
00068 std::cout << "total " << progress_black + progress_white << "\n";
00069 std::cout << "test " << progress::ml::NewProgress(state).progress16().value() << "\n";
00070 }
00071
00072 void show(const char *filename)
00073 {
00074 std::cout << filename << "\n";
00075 CsaFile file(filename);
00076 const vector<osl::Move> moves = file.getRecord().getMoves();
00077 NumEffectState state(file.getInitialState());
00078 for (unsigned int i=0; i<moves.size(); i++)
00079 {
00080 if (show_all_states)
00081 show(state);
00082 const Move m = moves[i];
00083 ApplyMoveOfTurn::doMove(state, m);
00084 }
00085 show(state);
00086 }
00087
00088
00089
00090
00091
00092