void write(BinaryWriter& bin, const OLattice<T>& d)
void write(BinaryWriter& bin, const OScalar<T>& d)
void write(BinaryWriter& bin, const OLattice<T>& d){  const int iend = Layout::vol();  for(int site=0; site < iend; ++site)   {    int i = Layout::linearSiteIndex(site);    int outersite = i >> INNER_LEN;    int innersite = i & ((1 << INNER_LEN)-1);    typedef typename UnaryReturn<OLattice<T>, FnGetSite>::Type_t  Site_t;    Site_t  this_site = getSite(d.elem(outersite),innersite);    bin.writeArray((const char*)&this_site,		   sizeof(typename WordType<Site_t>::Type_t), 		   sizeof(Site_t) / sizeof(typename WordType<Site_t>::Type_t));  }}