void libvisio::VSDMetaData::readPropertySet(librevenge::RVNGInputStream *input, uint32_t offset, char *FMTID) { input->seek(offset, librevenge::RVNG_SEEK_SET); // Size input->seek(4, librevenge::RVNG_SEEK_CUR); uint32_t numProperties = readU32(input); for (uint32_t i = 0; i < numProperties; ++i) readPropertyIdentifierAndOffset(input); for (uint32_t i = 0; i < numProperties; ++i) { if (i >= m_idsAndOffsets.size()) break; readTypedPropertyValue(input, i, offset + m_idsAndOffsets[i].second, FMTID); } }
void libvisio::VSDMetaData::readPropertySet(librevenge::RVNGInputStream *input, uint32_t offset, char *FMTID) { input->seek(offset, librevenge::RVNG_SEEK_SET); // Size input->seek(4, librevenge::RVNG_SEEK_CUR); uint32_t numProperties = readU32(input); // The exact size of a property is not known beforehand: check upper bound if (numProperties > getRemainingLength(input) / 12) numProperties = getRemainingLength(input) / 12; for (uint32_t i = 0; i < numProperties; ++i) readPropertyIdentifierAndOffset(input); for (uint32_t i = 0; i < numProperties; ++i) { if (i >= m_idsAndOffsets.size()) break; readTypedPropertyValue(input, i, offset + m_idsAndOffsets[i].second, FMTID); } }