#ifndef asset_hpp #define asset_hpp struct Arena; struct Asset_Loader; struct Pack_File; struct Pack; struct Asset { Asset* next; Asset_Loader* loader; }; struct Asset_Loader { virtual Asset* load(Arena* a, Arena* s, Pack_File* f) = 0; virtual void unload(Asset* a) = 0; }; struct Asset_Arena { Pack* p; Arena* a, * s; Asset* assets; void init(Arena* arena, const char* pack_name); void destroy(); Asset* load(const char* name); void claim(Asset* a); }; void register_asset_loader( const char* magic, Asset_Loader* loader ); #endif