⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sharedresourcebundle.h

📁 java实现的简单的分形树。简单易学!是学习分形知识的很好的例子。其java语法简单
💻 H
字号:
// --------------------------------------------------------------------------
// Dingus project - a collection of subsystems for game/graphics applications
// --------------------------------------------------------------------------

#ifndef __SHARED_RESOURCE_BUNDLE_H
#define __SHARED_RESOURCE_BUNDLE_H

#include "ResourceBundle.h"
#include "ResourceId.h"

namespace dingus {

template<typename T, typename RESDATA>
class CSharedResourceBundle : public IResourceBundle {
private:
	typedef std::map<CResourceId, std::pair<RESDATA,T*> >	TResourceMap;
	
public:
	CSharedResourceBundle() {}
	virtual ~CSharedResourceBundle() { }
	
	T* getResourceById( CResourceId const& id )	{
		T* resource = findResource( id );
		assert( resource );
		return resource;
	}

	// NOTE: deletes the resource, so make sure no one references it!
	void unregisterResource( const CResourceId& id ) {
		T* resource = findResource( id );
		if( resource ) {
			deleteResource( *resource );
			mResourceMap.erase( id );
		}
	}

	void clear() {
		for( TResourceMap::iterator it = mResourceMap.begin(); it != mResourceMap.end(); ) {
			assert( it->second.second );
			deleteResource( *it->second.second );
			it = mResourceMap.erase( it );
		}
	}
			
protected:
	void registerResource( CResourceId const& id, T& resource, const RESDATA& data ) {
		mResourceMap.insert( std::make_pair( id, std::make_pair(data, &resource ) ) );
	}

	T* findResource( CResourceId const& id ) {
		TResourceMap::const_iterator it = mResourceMap.find( id );
		return ( ( it != mResourceMap.end() ) ? it->second.second : NULL );
	}

	virtual void deleteResource( T& resource ) = 0;	
		
protected:
	TResourceMap	mResourceMap;
};

}; // namespace

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -