//////////////////////////////// //~ Resource cache types Struct(ResourceEntry) { ResourceEntry *next; ResourceEntry *next_in_bin; u64 hash; String name; String data; }; Struct(ResourceEntryBin) { ResourceEntry *first; ResourceEntry *last; }; //////////////////////////////// //~ State types #define NumResourceEntryBins 4096 Struct(SharedResourceState) { ResourceEntry *first_entry; ResourceEntry *last_entry; u64 entries_count; ResourceEntryBin bins[NumResourceEntryBins]; } extern shared_resource_state; //////////////////////////////// //~ Startup void InitResourceSystem(u64 archive_strings_count, String *archive_strings); //////////////////////////////// //~ Resource operations b32 IsResourceNil(Resource resource); Resource ResourceFromStore(ResourceStore *store, String name); //////////////////////////////// //~ Resource cache operations ResourceEntry *ResourceEntryFromHash(u64 hash); //////////////////////////////// //~ Resource data operations String DataFromResource(Resource resource); String NameFromResource(Resource resource);