$#include "ResourceCache.h" class ResourceCache { void ReleaseAllResources(bool force = false); bool ReloadResource(Resource* resource); void SetMemoryBudget(ShortStringHash type, unsigned budget); void SetMemoryBudget(const String type, unsigned budget); void SetAutoReloadResources(bool enable); void SetSearchPackagesFirst(bool value); tolua_outside File* ResourceCacheGetFile @ GetFile(const String name); Resource* GetResource(const String type, const String name); bool Exists(const String name) const; unsigned GetMemoryBudget(ShortStringHash type) const; unsigned GetMemoryUse(ShortStringHash type) const; unsigned GetTotalMemoryUse() const; String GetResourceFileName(const String name) const; bool GetAutoReloadResources() const; bool GetSearchPackagesFirst() const; String GetPreferredResourceDir(const String path) const; String SanitateResourceName(const String name) const; String SanitateResourceDirName(const String name) const; tolua_readonly tolua_property__get_set unsigned totalMemoryUse; tolua_readonly tolua_property__get_set bool autoReloadResources; tolua_readonly tolua_property__get_set bool searchPackagesFirst; }; ${ static File* ResourceCacheGetFile(ResourceCache* cache, const String& fileName) { SharedPtr file = cache->GetFile(fileName); if (!file) return 0; else { // Need to safely detach the object from the shared pointer so that the Lua script can manually // delete the object once done. The refcount needs to be set zero or else the destructor will assert File* fileRaw = file.Get(); fileRaw->AddRef(); file.Reset(); RefCount* refCount = fileRaw->RefCountPtr(); refCount->refs_ = 0; return fileRaw; } } // Disable generated GetResource function. #define TOLUA_DISABLE_tolua_ResourceLuaAPI_ResourceCache_GetResource00 static int tolua_ResourceLuaAPI_ResourceCache_GetResource00(lua_State* tolua_S) { #ifndef TOLUA_RELEASE tolua_Error tolua_err; if ( !tolua_isusertype(tolua_S,1,"ResourceCache",0,&tolua_err) || !tolua_isurho3dstring(tolua_S,2,0,&tolua_err) || !tolua_isurho3dstring(tolua_S,3,0,&tolua_err) || !tolua_isnoobj(tolua_S,4,&tolua_err) ) goto tolua_lerror; else #endif { ResourceCache* self = (ResourceCache*) tolua_tousertype(tolua_S,1,0); const String type = ((const String) tolua_tourho3dstring(tolua_S,2,0)); const String name = ((const String) tolua_tourho3dstring(tolua_S,3,0)); #ifndef TOLUA_RELEASE if (!self) tolua_error(tolua_S,"invalid 'self' in function 'GetResource'", NULL); #endif { Resource* tolua_ret = (Resource*) self->GetResource(type,name); tolua_pushusertype(tolua_S,(void*)tolua_ret,type.CString()); } } return 1; #ifndef TOLUA_RELEASE tolua_lerror: tolua_error(tolua_S,"#ferror in function 'GetResource'.",&tolua_err); return 0; #endif } $}