show-sibling.cc
Go to the documentation of this file.
00001 /* show-sibling.cc
00002  */
00003 #include "osl/state/numEffectState.h"
00004 #include "osl/move_generator/legalMoves.h"
00005 #include "osl/container/moveVector.h"
00006 #include "osl/record/csaRecord.h"
00007 #include "osl/record/ki2.h"
00008 #include "osl/record/kakinoki.h"
00009 #include "osl/record/kisen.h"
00010 #include <boost/algorithm/string/predicate.hpp>
00011 #include <iostream>
00012 using namespace osl;
00013 using namespace std;
00014 namespace csa=osl::record::csa;
00015 void run(const osl::vector<Move>& moves) {
00016   NumEffectState state;
00017   for (size_t i=0; i<moves.size(); ++i) {
00018     const Move selected = moves[i];
00019     MoveVector all;
00020     LegalMoves::generate(state, all);
00021 
00022     cout << "selected " << csa::show(selected) << " others";
00023     for (size_t j=0; j<all.size(); ++j) {
00024       if (all[j] != selected)
00025         cout << " " << csa::show(all[j]);
00026     }
00027     cout << endl;
00028     
00029     state.makeMove(selected);
00030   }
00031 }
00032 int main(int argc, char **argv) {
00033   for (int i=1; i<argc; ++i) {
00034     const char *filename = argv[i];
00035     if (boost::algorithm::iends_with(filename, ".csa")) {
00036       const CsaFile csa(filename);
00037       run(csa.getRecord().getMoves());
00038     }
00039     else if (boost::algorithm::iends_with(filename, ".ki2")) {
00040       const Ki2File ki2(filename);
00041       run(ki2.getRecord().getMoves());
00042     }
00043     else if (boost::algorithm::iends_with(filename, ".kif")
00044              && KakinokiFile::isKakinokiFile(filename)) {
00045       const KakinokiFile kif(filename);
00046       run(kif.getRecord().getMoves());
00047     }
00048     else if (boost::algorithm::iends_with(filename, ".kif")) {
00049       KisenFile kisen(filename);
00050       for (size_t j=0; j<kisen.size(); ++j)
00051         run(kisen.getMoves(j));
00052     }
00053     else {
00054       cerr << "Unknown file type: " << filename << "\n";
00055       continue;
00056     }
00057   }
00058 }
00059 // ;;; Local Variables:
00060 // ;;; mode:c++
00061 // ;;; c-basic-offset:2
00062 // ;;; coding:utf-8
00063 // ;;; End:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines