00001 #include "osl/apply_move/applyMove.h" 00002 #include "osl/state/numEffectState.h" 00003 #include "osl/record/kisen.h" 00004 #include "osl/record/csaRecord.h" 00005 00006 #include <iostream> 00007 #include <fstream> 00008 00009 void usage (const char *program_name) 00010 { 00011 std::cerr << "Usage: " << program_name << " KISENFILE INDEX CSAFILE" 00012 << std::endl; 00013 exit(1); 00014 } 00015 00016 void convert(const char*kisen_filename, const char *csa_filename, size_t i) 00017 { 00018 osl::record::KisenFile kisen(kisen_filename); 00019 std::ofstream ofs(csa_filename); 00020 00021 if (i < kisen.size()) 00022 { 00023 osl::state::NumEffectState state = kisen.getInitialState(); 00024 ofs << state; 00025 const osl::stl::vector<osl::Move> moves = kisen.getMoves(i); 00026 for (size_t j = 0; j < moves.size(); ++j) 00027 { 00028 ofs << osl::record::csa::show(moves[j]) << std::endl; 00029 } 00030 } 00031 else 00032 { 00033 std::cerr << "Index out of bounds: " << i << std::endl; 00034 } 00035 } 00036 00037 int main(int argc, char **argv) 00038 { 00039 if (argc != 4) 00040 usage(argv[0]); 00041 00042 convert(argv[1], argv[3], atoi(argv[2])); 00043 00044 return 0; 00045 }