+template <typename E>
+class dyldCacheSlideInfo {
+public:
+ uint32_t version() const INLINE { return E::get32(fields.version); }
+ void set_version(uint32_t value) INLINE { E::set32(fields.version, value); }
+
+ uint32_t toc_offset() const INLINE { return E::get32(fields.toc_offset); }
+ void set_toc_offset(uint32_t value) INLINE { E::set32(fields.toc_offset, value); }
+
+ uint32_t toc_count() const INLINE { return E::get32(fields.toc_count); }
+ void set_toc_count(uint32_t value) INLINE { E::set32(fields.toc_count, value); }
+
+ uint32_t entries_offset() const INLINE { return E::get32(fields.entries_offset); }
+ void set_entries_offset(uint32_t value) INLINE { E::set32(fields.entries_offset, value); }
+
+ uint32_t entries_count() const INLINE { return E::get32(fields.entries_count); }
+ void set_entries_count(uint32_t value) INLINE { E::set32(fields.entries_count, value); }
+
+ uint32_t entries_size() const INLINE { return E::get32(fields.entries_size); }
+ void set_entries_size(uint32_t value) INLINE { E::set32(fields.entries_size, value); }
+
+ uint16_t toc(unsigned index) const INLINE { return E::get16(((uint16_t*)(((uint8_t*)this)+E::get16(fields.toc_offset)))[index]); }
+ void set_toc(unsigned index, uint16_t value) INLINE { return E::set16(((uint16_t*)(((uint8_t*)this)+E::get16(fields.toc_offset)))[index], value); }
+
+private:
+ dyld_cache_slide_info fields;
+};
+
+
+struct dyldCacheSlideInfoEntry {
+ uint8_t bits[4096/(8*4)]; // 128-byte bitmap
+};
+
+
+
+template <typename E>
+class dyldCacheLocalSymbolsInfo {
+public:
+ uint32_t nlistOffset() const INLINE { return E::get32(fields.nlistOffset); }
+ void set_nlistOffset(uint32_t value) INLINE { E::set32(fields.nlistOffset, value); }
+
+ uint32_t nlistCount() const INLINE { return E::get32(fields.nlistCount); }
+ void set_nlistCount(uint32_t value) INLINE { E::set32(fields.nlistCount, value); }
+
+ uint32_t stringsOffset() const INLINE { return E::get32(fields.stringsOffset); }
+ void set_stringsOffset(uint32_t value) INLINE { E::set32(fields.stringsOffset, value); }
+
+ uint32_t stringsSize() const INLINE { return E::get32(fields.stringsSize); }
+ void set_stringsSize(uint32_t value) INLINE { E::set32(fields.stringsSize, value); }
+
+ uint32_t entriesOffset() const INLINE { return E::get32(fields.entriesOffset); }
+ void set_entriesOffset(uint32_t value) INLINE { E::set32(fields.entriesOffset, value); }
+
+ uint32_t entriesCount() const INLINE { return E::get32(fields.entriesCount); }
+ void set_entriesCount(uint32_t value) INLINE { E::set32(fields.entriesCount, value); }
+
+private:
+ dyld_cache_local_symbols_info fields;
+};
+
+
+template <typename E>
+class dyldCacheLocalSymbolEntry {
+public:
+ uint32_t dylibOffset() const INLINE { return E::get32(fields.dylibOffset); }
+ void set_dylibOffset(uint32_t value) INLINE { E::set32(fields.dylibOffset, value); }
+
+ uint32_t nlistStartIndex() const INLINE { return E::get32(fields.nlistStartIndex); }
+ void set_nlistStartIndex(uint32_t value) INLINE { E::set32(fields.nlistStartIndex, value); }
+
+ uint32_t nlistCount() const INLINE { return E::get32(fields.nlistCount); }
+ void set_nlistCount(uint32_t value) INLINE { E::set32(fields.nlistCount, value); }
+
+private:
+ dyld_cache_local_symbols_entry fields;
+};
+
+