| 149 | } |
| 150 | |
| 151 | Result WrapArchiveBuffer(const void* index_buffer, uint32_t index_buffer_size, bool mem_mapped_index, |
| 152 | const void* resource_data, uint32_t resource_data_size, bool mem_mapped_data, |
| 153 | HArchiveIndexContainer* archive) |
| 154 | { |
| 155 | *archive = new ArchiveIndexContainer; |
| 156 | (*archive)->m_IsMemMapped = mem_mapped_index; |
| 157 | ArchiveIndex* a = (ArchiveIndex*) index_buffer; |
| 158 | uint32_t version = dmEndian::ToNetwork(a->m_Version); |
| 159 | if (version != VERSION) |
| 160 | { |
| 161 | dmLogError("Archive version differs. Expected %d, but it was %d", VERSION, version); |
| 162 | return RESULT_VERSION_MISMATCH; |
| 163 | } |
| 164 | |
| 165 | (*archive)->m_ArchiveFileIndex = new ArchiveFileIndex; |
| 166 | (*archive)->m_ArchiveFileIndex->m_ResourceData = (uint8_t*)resource_data; |
| 167 | (*archive)->m_ArchiveFileIndex->m_ResourceSize = resource_data_size; |
| 168 | (*archive)->m_ArchiveFileIndex->m_IsMemMapped = mem_mapped_data; |
| 169 | |
| 170 | (*archive)->m_ArchiveIndex = a; |
| 171 | (*archive)->m_ArchiveIndexSize = index_buffer_size; |
| 172 | |
| 173 | return RESULT_OK; |
| 174 | } |
| 175 | |
| 176 | static void DeleteArchiveFileIndex(ArchiveFileIndex* afi) |
| 177 | { |