7 #include <boost/filesystem.hpp> 
    9 #  include <boost/filesystem/fstream.hpp> 
   11 #include <boost/static_assert.hpp> 
   29       template class PiecePairEvalTableBase<PiecePairRawTable>;
 
   30       template class PiecePairEval<PiecePairRawEval,PiecePairRawTable>;
 
   48   std::ofstream os(filename);
 
   50   for(
int i=0;i<82;i++){
 
   51     Square pos0=SquareCompressor::melt(i);
 
   52     for(
int j=0;j<82;j++){
 
   53       Square pos1=SquareCompressor::melt(j);
 
   56           int index0=PiecePairIndex::indexOf(pos0,static_cast<PtypeO>(k+
PTYPEO_MIN));
 
   57           int index1=PiecePairIndex::indexOf(pos1,static_cast<PtypeO>(l+
PTYPEO_MIN));
 
   58           int index=PiecePairIndex::indexOf(index0,index1);
 
   60           buffer[(i*32+k)*82*32+(j*32+l)]=values[index];
 
   65   os.write(reinterpret_cast<const char*>(&*buffer.begin()),buffer.size());
 
   73     std::cerr << 
"PiecePairRawTable loading...  " << filename << 
"\n";
 
   76   namespace bf = boost::filesystem;
 
   77   bf::path filename_path(filename);
 
   78   bf::ifstream is(filename_path, std::ios_base::in | std::ios_base::binary);
 
   80   is.exceptions(std::ios_base::badbit | std::ios_base::failbit);
 
   83   is.rdbuf()->pubsetbuf(reinterpret_cast<char*>(&*temp_buffer.begin()), temp_buffer.size());
 
   85   std::ifstream is(filename);
 
   88   is.read(reinterpret_cast<char*>(&*buffer.begin()), buffer.size());
 
   89   for(
int i=0;i<82;i++){
 
   90     Square pos0=SquareCompressor::melt(i);
 
   91     for(
int j=0;j<82;j++){
 
   92       Square pos1=SquareCompressor::melt(j);
 
   95          int index0=PiecePairIndex::indexOf(pos0,static_cast<PtypeO>(k+
PTYPEO_MIN));
 
   96          int index1=PiecePairIndex::indexOf(pos1,static_cast<PtypeO>(l+
PTYPEO_MIN));
 
   97          int index=PiecePairIndex::indexOf(index0,index1);
 
   99            values[index]=buffer[(i*32+k)*82*32+(j*32+l)];
 
  110     std::cerr << 
"done.\n";
 
  118   static std::string filename_memory;
 
  119   if (! filename_memory.empty())
 
  121     if (filename_memory != filename)
 
  123       std::cerr << 
"PiecePairRawTable: don't load " << filename 
 
  124                 << 
", since " << filename_memory
 
  125                 << 
" already loaded \n";
 
  130   filename_memory = filename;
 
  131   return loadFromBinaryFile(filename);