ERMsg CShapeFileIndex::Write(const string& filePath)const { ERMsg msg; ofStream file; msg = file.open(filePath, ios::out | ios::binary); if (msg) { try { // write map instance to archive boost::archive::binary_oarchive io(file, boost::archive::no_header); m_header.WriteHeader(io); ASSERT((m_header.GetFileLength() - 50) % 4 == 0); int nbRecord = (int)m_recordsInfo.size(); for (int i = 0; i < nbRecord; i++) { WriteBigEndian(io, m_recordsInfo[i].m_offset); WriteBigEndian(io, m_recordsInfo[i].m_recordLength); } } catch (boost::archive::archive_exception e) { msg.ajoute(e.what()); } file.close(); } return msg; }
bool OutputStream::writeIntBigEndian(int value) { unsigned int v; char pInt[sizeof(v)]; WriteBigEndian(pInt, (unsigned int)value); return write(pInt, 4); }
bool OutputStream::writeInt64BigEndian(int64 value) { uint64 v; char pUint64[sizeof(v)]; WriteBigEndian(pUint64, (uint64)value); return write(pUint64, 8); }
bool OutputStream::writeShortBigEndian(short value) { unsigned short v; char pShort[sizeof(v)]; WriteBigEndian(pShort, (unsigned short)value); return write(pShort, 2); }