Ignore:
Timestamp:
12/23/2006 08:44:49 PM (13 years ago)
Author:
art
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • nrEngine/include/ResourceLoader.h

    r1 r15  
    2121#include "Prerequisities.h" 
    2222#include "ResourceSystem.h" 
     23#include <boost/enable_shared_from_this.hpp> 
    2324 
    2425namespace nrEngine{ 
     
    7576        * \ingroup resource 
    7677        **/ 
    77         class _NRExport IResourceLoader{ 
     78        class _NRExport IResourceLoader : public boost::enable_shared_from_this<IResourceLoader>{ 
    7879                public: 
    7980                         
     
    9798                         * @return either OK or an error code 
    9899                        **/ 
    99                         IResource* load(const std::string& name, const std::string& group, const std::string& fileName, const std::string& resourceType = std::string(), PropertyList* param = NULL); 
     100                        SharedPtr<IResource> load(const std::string& name, const std::string& group, const std::string& fileName, const std::string& resourceType = std::string(), PropertyList* param = NULL); 
    100101                                         
    101102                        /** 
     
    111112                         * object will be created of this type. This will be automaticaly registered by the manager. 
    112113                         **/ 
    113                         IResource* create(const std::string& resourceType, PropertyList* params = NULL); 
     114                        SharedPtr<IResource> create(const std::string& resourceType, PropertyList* params = NULL); 
    114115 
    115116                        /** 
     
    119120                         * already exists. 
    120121                         **/ 
    121                         IResource* create(const std::string& name, const std::string& group, const std::string& resourceType, PropertyList* params = NULL); 
     122                        SharedPtr<IResource> create(const std::string& name, const std::string& group, const std::string& resourceType, PropertyList* params = NULL); 
    122123 
    123124                        /** 
     
    151152                        **/ 
    152153                        bool supportFileType(const std::string& fileType) const ; 
    153          
     154 
     155                        /** 
     156                         * Unload the given resource. Unloading of a resource does not mean that the 
     157                         * resource is removed from the memory. It just release almost all used 
     158                         * memory and an empty resource will be used instead. To remove it completly 
     159                         * from the memory call remove() instead. 
     160                         * 
     161                         * This method will be called by the manager or the resource, as soon as a resource must 
     162                         * be unloaded. 
     163                         **/ 
     164                        Result unload(SharedPtr<IResource> resource); 
     165 
     166                        /** 
     167                         * Remove the resource from the memory. This method will be called 
     168                         * by the resource manager, so the loader can do the stuff needed 
     169                         * to remove the resource. 
     170                         **/ 
     171                        Result remove(SharedPtr<IResource> resource); 
     172 
     173                        /** 
     174                         * Reload a certain resource again. A resource object has to be created before. 
     175                         * If the resource object is loaded, so it will be unloaded and loaded again. Also 
     176                         * the resource object will be notified about this event, so it can react on this. 
     177                         * No new instancies will be created. 
     178                         **/ 
     179                        Result reload(SharedPtr<IResource> resource); 
     180 
     181 
    154182                protected: 
    155183 
     
    163191                         * 
    164192                         **/ 
    165                         virtual Result unloadImpl(IResource*); 
     193                        virtual Result unloadResourceImpl(IResource*); 
    166194 
    167195                        /** 
     
    175203                         * NULL will be passed). 
    176204                         **/ 
    177                         virtual Result reloadImpl(IResource*); 
     205                        virtual Result reloadResourceImpl(IResource*); 
    178206                         
    179207                        /** 
     
    185213                         * @param param Specific parameters specified by the user 
    186214                         **/ 
    187                         virtual Result loadImpl(IResource* res, const std::string& fileName, PropertyList* param = NULL) = 0; 
     215                        virtual Result loadResourceImpl(IResource* res, const std::string& fileName, PropertyList* param = NULL) = 0; 
    188216 
    189217                        /** 
     
    195223                         *  
    196224                         **/ 
    197                         virtual IResource* createImpl(const std::string& resourceType, PropertyList* params = NULL) = 0; 
     225                        virtual IResource* createResourceImpl(const std::string& resourceType, PropertyList* params = NULL) = 0; 
    198226                         
    199227                        /** 
     
    204232                         * @return Instance of empty resource 
    205233                         **/ 
    206                         virtual IResource* createEmpty(const std::string& resourceType) = 0; 
     234                        virtual IResource* createEmptyResource(const std::string& resourceType) = 0; 
    207235                         
    208236                        /** 
     
    213241                         * This method should be called from the constructor, to declare supported types. 
    214242                         **/ 
    215                         virtual Result initialize() = 0; 
     243                        virtual Result initializeResourceLoader() = 0; 
    216244                         
    217245                        /** 
     
    267295                private: 
    268296                         
    269                         //! Resource can notify the loader about certain events 
    270                         friend class IResource; 
    271                          
    272297                        //! List of supported resource types 
    273298                        std::vector< std::string >              mSupportedResourceTypes; 
     
    282307                        std::string mName; 
    283308 
    284                         //! List of resources loaded with the help of this loader 
    285                         std::list<IResource* > mHandledResources; 
    286  
    287                         /** 
    288                          * Unload the given resource. Unloading of a resource does not mean that the 
    289                          * resource is removed from the memory. It just release almost all used 
    290                          * memory and an empty resource will be used instead. To remove it completly 
    291                          * from the memory call remove() instead. 
    292                          * 
    293                          * This method will be called by the manager or the resource, as soon as a resource must 
    294                          * be unloaded. 
    295                          **/ 
    296                         Result unload(IResource* resource); 
    297  
    298                         /** 
    299                          * Remove the resource from the memory. This method will be called 
    300                          * by the resource manager, so the loader can do the stuff needed 
    301                          * to remove the resource. 
    302                          **/ 
    303                         Result remove(IResource* resource); 
    304  
    305                         /** 
    306                          * Reload a certain resource again. A resource object has to be created before. 
    307                          * If the resource object is loaded, so it will be unloaded and loaded again. Also 
    308                          * the resource object will be notified about this event, so it can react on this. 
    309                          * No new instancies will be created. 
    310                          **/ 
    311                         Result reload(IResource* resource); 
     309                        typedef std::list< SharedPtr<IResource> >  ResourceList; 
     310                         
     311                        //! List of resources managed by this loader 
     312                        ResourceList mHandledResources; 
     313 
     314                        /** 
     315                         * Get shared pointer from this class 
     316                         **/     
     317                        SharedPtr<IResourceLoader> getSharedPtrFromThis() 
     318                        { 
     319                                return shared_from_this(); 
     320                        } 
    312321 
    313322                        /** 
     
    315324                         * will be removed from the memory now. 
    316325                         **/ 
    317                         void notifyRemoveResource(IResource*); 
     326                        void notifyRemoveResource(SharedPtr<IResource>); 
    318327 
    319328                        /** 
     
    321330                         * from resource manager or by the resource itself 
    322331                         **/ 
    323                         void notifyUnloadResource(IResource*); 
     332                        void notifyUnloadResource(SharedPtr<IResource>); 
    324333                         
    325334        }; 
Note: See TracChangeset for help on using the changeset viewer.