1 /***************************************************************************
2  *   Copyright (C) 2005-2019 by the FIFE team                              *
3  *   http://www.fifengine.net                                              *
4  *   This file is part of FIFE.                                            *
5  *                                                                         *
6  *   FIFE is free software; you can redistribute it and/or                 *
7  *   modify it under the terms of the GNU Lesser General Public            *
8  *   License as published by the Free Software Foundation; either          *
9  *   version 2.1 of the License, or (at your option) any later version.    *
10  *                                                                         *
11  *   This library is distributed in the hope that it will be useful,       *
12  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
13  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU     *
14  *   Lesser General Public License for more details.                       *
15  *                                                                         *
16  *   You should have received a copy of the GNU Lesser General Public      *
17  *   License along with this library; if not, write to the                 *
18  *   Free Software Foundation, Inc.,                                       *
19  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA          *
20  ***************************************************************************/
21 
22 #ifndef FIFE_RESOURE_MANAGER_H
23 #define FIFE_RESOURE_MANAGER_H
24 
25 // Standard C++ library includes
26 #include <map>
27 #include <string>
28 #include <vector>
29 
30 // 3rd party library includes
31 
32 // FIFE includes
33 // These includes are split up in two parts, separated by one empty line
34 // First block: files included from the FIFE root src directory
35 // Second block: files included from the same folder
36 #include "resource.h"
37 
38 namespace FIFE {
39 
40 	/** IResourceManager
41 	 *
42 	 * An interface for managing resources.
43 	 *
44 	 * @see IResource
45 	 * @see IResourceLoader
46 	 *
47 	 */
48 
49 	class IResourceManager {
50 	public:
51 
52 		/** Default constructor.
53 		 */
IResourceManager()54 		IResourceManager() { }
55 
56 		/** destructor
57 		 */
~IResourceManager()58 		virtual ~IResourceManager() { }
59 
60 		/** Gets the total amount of memory used by resources
61 		 *
62 		 * This function uses the IResource's getSize() function
63 		 * to calculate the total memory used.  It does not include
64 		 * memory used by the internal resource manager book keeping
65 		 * structures.  This value is only accurate if the resources
66 		 * getSize() function returns an accurate result.
67 		 *
68 		 * @return Total memory used
69 		 *
70 		 */
71 		virtual size_t getMemoryUsed() const = 0;
72 
73 		/** Returns the number of unloaded resources
74 		 *
75 		 * Gets the total number of resources created but not loaded.
76 		 * These resources have been defined in the resource manager
77 		 * but have yet to be loaded from disk.
78 		 *
79 		 * @return Total resources created
80 		 *
81 		 */
82 		virtual size_t getTotalResourcesCreated() const = 0;
83 
84 		/** Returns the number of loaded resources
85 		 *
86 		 * Gets the total number of resources created and loaded.
87 		 * These resources have been defined in the resource manager
88 		 * have been loaded from disk.
89 		 *
90 		 * @return Total resources loaded
91 		 *
92 		 */
93 		virtual size_t getTotalResourcesLoaded() const = 0;
94 
95 		/** Returns the number of defined resources
96 		 *
97 		 * Gets the total number of resources managed by the manager.
98 		 *
99 		 * @return Total resources managed
100 		 *
101 		 */
102 		virtual size_t getTotalResources() const = 0;
103 	};
104 
105 } //FIFE
106 
107 #endif
108