Changeset 7229 in orxonox.OLD for branches/resources/src/lib/util
- Timestamp:
- Mar 21, 2006, 3:13:34 PM (19 years ago)
- Location:
- branches/resources/src/lib/util
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/resources/src/lib/util/loading/resource.cc
r7195 r7229 18 18 #include "resource.h" 19 19 20 using namespace std;21 20 21 namespace Loading 22 { 22 23 23 /** 24 * standard constructor 25 */ 26 Resource::Resource (const std::string& fileName) 27 { 28 this->setClassID(CL_RESOURCE, "Resource"); 24 /** 25 * standard constructor 26 */ 27 Resource::Resource (const std::string& fileName, ResourcePriority prio) 28 { 29 this->setClassID(CL_RESOURCE, "Resource"); 30 this->resource = NULL; 29 31 32 } 33 34 /** 35 * standard deconstructor 36 */ 37 Resource::~Resource () 38 { 39 // delete what has to be deleted here 40 } 41 42 Resource::SharedResource::SharedResource() 43 { 44 this->referenceCount = 1; 45 this->type = CL_NULL; 46 this->prio = RP_NO; 47 } 30 48 } 31 32 /**33 * standard deconstructor34 */35 Resource::~Resource ()36 {37 // delete what has to be deleted here38 } -
branches/resources/src/lib/util/loading/resource.h
r7195 r7229 10 10 #include "multi_type.h" 11 11 #include <string> 12 13 // FORWARD DECLARATION 12 #include <map> 13 #include <vector> 14 14 15 15 16 namespace Loading 17 { 18 // FORWARD DECLARATION 16 19 17 //! An enumerator for different (UN)LOAD-types.18 /**19 * RP_NO: will be unloaded on request20 * RP_LEVEL: will be unloaded at the end of a Level21 * RP_CAMPAIGN: will be unloaded at the end of a Campaign22 * RP_GAME: will be unloaded at the end of the whole Game (when closing orxonox)23 */24 typedef enum ResourcePriority25 {26 RP_NO = 0,27 RP_LEVEL = 1,28 RP_CAMPAIGN = 2,29 RP_GAME = 330 };20 //! An enumerator for different (UN)LOAD-types. 21 /** 22 * RP_NO: will be unloaded on request 23 * RP_LEVEL: will be unloaded at the end of a Level 24 * RP_CAMPAIGN: will be unloaded at the end of a Campaign 25 * RP_GAME: will be unloaded at the end of the whole Game (when closing orxonox) 26 */ 27 typedef enum ResourcePriority 28 { 29 RP_NO = 0, 30 RP_LEVEL = 1, 31 RP_CAMPAIGN = 2, 32 RP_GAME = 3 33 }; 31 34 32 35 36 //! A Resource is an Object, that can be loaded from Disk 37 /** 38 * A Resource can cahnge the internal type, meaning it is a 39 * SmartPointer, that keeps track of the InternalCount of the 40 * Resource (SharedResource). 41 */ 42 class Resource : virtual public BaseObject 43 { 44 protected: 45 /** 46 * This is a Class for the internal handling of the Resource. 47 * Any Resource keeps exactly one of these Classes, so it can 48 * reference and move it around, and keep track of how many 49 * references of it are stored. 50 */ 51 class SharedResource 52 { 53 public: 54 SharedResource(); 55 std::string fileName; 33 56 34 //! A Resource is an Object, that can be loaded from Disk 35 /** 36 * 37 */ 38 class Resource : virtual public BaseObject { 57 unsigned int referenceCount; //!< How many times this Resource has been loaded. 58 ClassID type; //!< ResourceType of this Resource. 59 ResourcePriority prio; //!< The Priority of this resource. (can only be increased, so noone else will delete this) 39 60 40 public: 41 Resource(const std::string& fileName); 42 virtual ~Resource(); 61 MultiType param[3]; //!< The Parameters given to this Resource. 62 }; 43 63 44 virtual bool load(std::string& fileName, const MultiType& param1, const MultiType& param2);45 virtual bool reload();46 virtual bool unload();47 64 48 private: 49 std::string fileName; 65 public: 66 Resource(const std::string& fileName = "", ResourcePriority prio = RP_LEVEL); 67 virtual ~Resource(); 50 68 51 unsigned int referenceCount; //!< How many times this Resource has been loaded. 52 /// TODO REMOVE THIS: ResourceType type; //!< ResourceType of this Resource. 53 ResourcePriority prio; //!< The Priority of this resource. (can only be increased, so noone else will delete this) 69 // looks if the resource was already loaded and (if not) loads it. 70 virtual bool load(std::string& fileName = "", 71 ResourcePriority prio = RP_LEVEL, 72 const MultiType& param0 = MT_NULL, 73 const MultiType& param1 = MT_NULL, 74 const MultiType& param2 = MT_NULL); 75 // reloads the resource. 76 virtual bool reload() { }; 77 // unloads the sharedResource (from this Resource) 78 virtual bool unload(); 54 79 55 MultiType param[3]; //!< The Parameters given to this Resource. 56 }; 80 // checks if a resource was already loaded. 81 bool isLoaded(std::string& fileName, 82 const MultiType& param0 = MT_NULL, 83 const MultiType& param1 = MT_NULL, 84 const MultiType& param2 = MT_NULL); 57 85 86 // raises the priority can only be raised 87 void raisePriority(ResourcePriority prio); 88 /** @returns the referenceCount of the shared resource behind this resource or 0 if no internal Resource is stored */ 89 unsigned int referenceCount() const { return (this->resource)? this->resource->referenceCount : 0; }; 90 91 protected: 92 const SharedResource* findResource(std::string& fileName, 93 const MultiType& param0 = MT_NULL, 94 const MultiType& param1 = MT_NULL, 95 const MultiType& param2 = MT_NULL); 96 97 protected: 98 SharedResource* resource; //!< The internal Resource, this Resource is keeping (at the moment). 99 100 static std::map<ClassID, std::vector<SharedResource> > storedResources; 101 }; 102 103 } 58 104 #endif /* _RESOURCE_H */ -
branches/resources/src/lib/util/multi_type.cc
r7221 r7229 408 408 #endif 409 409 ("MultiType of Type '%s' :: Values: BOOL: '%d', INT: '%d', FLOAT: '%f', CHAR: '%c', STRING '%s'\n", 410 MultiType::MultiTypeToString(this->type) ,410 MultiType::MultiTypeToString(this->type).c_str(), 411 411 this->getBool(), 412 412 this->getInt(), … … 453 453 * @returns: the Type as a constant String (do not delete) 454 454 */ 455 const char*MultiType::MultiTypeToString(MT_Type type)455 const std::string& MultiType::MultiTypeToString(MT_Type type) 456 456 { 457 457 switch ( type ) 458 458 { 459 459 case MT_BOOL: 460 return "bool";460 return MultiType::multiTypeNames[1]; 461 461 case MT_INT: 462 return "int";462 return MultiType::multiTypeNames[2]; 463 463 case MT_FLOAT: 464 return "float";464 return MultiType::multiTypeNames[3]; 465 465 case MT_CHAR: 466 return "char";466 return MultiType::multiTypeNames[4]; 467 467 case MT_STRING: 468 return "string";469 } 470 return "NONE";468 return MultiType::multiTypeNames[5]; 469 } 470 return MultiType::multiTypeNames[0]; 471 471 } 472 472 … … 478 478 MT_Type MultiType::StringToMultiType(const std::string& type) 479 479 { 480 if (type == "bool")480 if (type == MultiType::multiTypeNames[1]) 481 481 return MT_BOOL; 482 if (type == "int")482 if (type == MultiType::multiTypeNames[2]) 483 483 return MT_INT; 484 if (type , "float")484 if (type == MultiType::multiTypeNames[3]) 485 485 return MT_FLOAT; 486 if (type == "char")486 if (type == MultiType::multiTypeNames[4]) 487 487 return MT_CHAR; 488 if (type == "string")488 if (type == MultiType::multiTypeNames[5]) 489 489 return MT_STRING; 490 490 491 491 return MT_NULL; 492 492 } 493 494 495 const std::string MultiType::multiTypeNames[] = 496 { 497 "none", 498 "bool", 499 "int", 500 "float", 501 "char", 502 "string" 503 }; -
branches/resources/src/lib/util/multi_type.h
r7225 r7229 92 92 void debug() const; 93 93 94 static const char*MultiTypeToString(MT_Type type);94 static const std::string& MultiTypeToString(MT_Type type); 95 95 static MT_Type StringToMultiType(const std::string& type); 96 96 97 97 private: 98 /** 99 * The stored internal Value of the MultiType is handled in this union 100 * plus the string down below 101 */ 98 102 union MultiTypeValue 99 103 { 100 bool Bool; 101 int Int; 102 float Float; 103 char Char; 104 bool Bool; //!< If Type == MT_BOOL this is the MultiType's value 105 int Int; //!< If Type == MT_INT this is the MultiType's value 106 float Float; //!< If Type == MT_FLOAT this is the MultiType's value 107 char Char; //!< If Type == MT_CHAR this is the MultiType's value 104 108 // std::string* String; 105 } value; 106 std::string storedString; 107 MT_Type type; 109 } value; //!< The stored internal value. 110 std::string storedString; //!< The String if either MT_TYPE == MT_STRING or if temporary requested 111 MT_Type type; //!< The Type of the MultiString. 112 113 static const std::string multiTypeNames[]; //!< An array to convert from String to MT_TYPE and backwords. 108 114 }; 109 115
Note: See TracChangeset
for help on using the changeset viewer.