30 #define FWFS_OBJECT_CACHE 33 #define FWFS_CACHE_SPACING 8 34 #define FWFS_CACHE_MASK (FWFS_CACHE_SPACING - 1) 36 #ifdef FWFS_OBJECT_CACHE 50 offsets.reset(
new uint32_t[offsetCount]);
76 return (pos >= 0 && pos < offsetCount) ? &offsets[pos] :
nullptr;
87 if(cachedIndex <= ref.
id) {
93 debug_d(
"Cache hit #%u @ 0x%08X (for #%u)", cachedIndex, *po, objID);
100 std::unique_ptr<uint32_t> offsets;
101 FWFS::Object::ID offsetCount{0};
void initialise(Object::ID objectCount)
Definition: ObjRefCache.h:43
#define FWFS_CACHE_MASK
Definition: ObjRefCache.h:34
Definition: DirectoryTemplate.h:36
#define debug_d
Definition: debug_progmem.h:100
void clear()
Definition: ObjRefCache.h:56
uint32_t * getOffset(FWFS::Object::ID objIndex)
Definition: ObjRefCache.h:73
void improve(ObjRef &ref, FWFS::Object::ID objID)
see if the cache can get a better search position to find an object
Definition: ObjRefCache.h:84
#define FWFS_CACHE_SPACING
Definition: ObjRefCache.h:33
gives the identity and location of an FWFS object
Definition: ObjectStore.h:32
Object::ID id
Definition: ObjectStore.h:34
uint32_t offset
Offset from start of image.
Definition: ObjectStore.h:33
void add(const ObjRef &ref)
Definition: ObjRefCache.h:62
Cache the locations of several objects to improve search speed.
Definition: ObjRefCache.h:40