Changeset 9765 in orxonox.OLD for branches/new_class_id/src/lib/util/loading/load_param_description.cc
- Timestamp:
- Sep 19, 2006, 5:49:58 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/new_class_id/src/lib/util/loading/load_param_description.cc
r8362 r9765 17 17 18 18 #include "multi_type.h" 19 #include <stdarg.h>20 19 #include "debug.h" 21 20 … … 24 23 */ 25 24 LoadParamDescription::LoadParamDescription(const std::string& paramName) 26 { 27 this->types = NULL; 28 this->defaultValues = NULL; 29 this->paramName = paramName; 30 } 25 : name(paramName) 26 { } 31 27 32 28 /** … … 35 31 LoadParamDescription::~LoadParamDescription() 36 32 { 37 if (this->defaultValues != NULL)38 {39 for(int i = 0; i < this->paramCount; i++)40 {41 delete[] this->defaultValues[i];42 }43 }44 45 delete[] this->types;46 delete[] this->defaultValues;47 33 } 48 34 … … 60 46 void LoadParamDescription::print() const 61 47 { 62 PRINT(3)(" <%s>", this-> paramName.c_str());63 for ( int i = 0; i < this->paramCount; i++)48 PRINT(3)(" <%s>", this->name.c_str()); 49 for (unsigned int i = 0; i < this->parameterCount; i++) 64 50 { 65 51 if (i > 0) … … 97 83 // } 98 84 } 99 PRINT(3)("</%s>", this-> paramName.c_str());85 PRINT(3)("</%s>", this->name.c_str()); 100 86 if (!this->description.empty()) 101 87 PRINT(3)(" -- %s", this->description.c_str()); 102 88 // default values 103 if (this->param Count > 0)89 if (this->parameterCount > 0) 104 90 { 105 91 PRINT(3)(" (Default: "); 106 for ( int i = 0; i < this->paramCount; i++)92 for (unsigned int i = 0; i < this->parameterCount; i++) 107 93 { 108 94 if (i > 0) 109 95 PRINT(3)(", "); 110 if (this->types[i] & MT_STRING)96 if (this->types[i] == "string") 111 97 { // leave brackets !! 112 PRINT(3)("\"%s\"", this->defaultValues[i]);98 PRINT(3)("\"%s\"", this->defaultValues[i].c_str()); 113 99 } 114 100 else 115 101 { 116 PRINT(3)("%s", this->defaultValues[i]);102 PRINT(3)("%s", this->defaultValues[i].c_str()); 117 103 } 118 104 } … … 121 107 PRINT(3)("\n"); 122 108 } 123 124 /**125 * A list, that holds all the classes that are loadable (classes not objects!!)126 */127 std::list<LoadClassDescription*>* LoadClassDescription::classList = NULL;128 129 /**130 * if the description of Parameters should be executed131 */132 bool LoadClassDescription::parametersDescription = false;133 134 /**135 * @param className the name of the class to be loadable136 */137 LoadClassDescription::LoadClassDescription(const std::string& className)138 {139 this->className = className;140 141 if (LoadClassDescription::classList == NULL)142 LoadClassDescription::classList = new std::list<LoadClassDescription*>;143 144 LoadClassDescription::classList->push_back(this);145 }146 147 /**148 * deletes a classDescription (deletes all the parameterDescriptions as well149 */150 LoadClassDescription::~LoadClassDescription()151 {152 std::list<LoadParamDescription*>::iterator it = this->paramList.begin();153 while (!this->paramList.empty())154 {155 delete this->paramList.front();156 this->paramList.pop_front();157 }158 }159 160 void LoadClassDescription::deleteAllDescriptions()161 {162 if (LoadClassDescription::classList != NULL)163 {164 while (!LoadClassDescription::classList->empty())165 {166 delete LoadClassDescription::classList->front();167 LoadClassDescription::classList->pop_front();168 }169 delete LoadClassDescription::classList;170 }171 LoadClassDescription::classList = NULL;172 }173 174 175 /**176 * adds a class to the list of loadable classes177 * @param className The name of the class to add178 179 this function searches for the className string, and if found just returns the appropriate Class.180 Otherwise it returns a new classDescription181 */182 LoadClassDescription* LoadClassDescription::addClass(const std::string& className)183 {184 if (LoadClassDescription::classList != NULL)185 {186 std::list<LoadClassDescription*>::iterator it = LoadClassDescription::classList->begin();187 while (it != LoadClassDescription::classList->end())188 {189 if ((*it)->className == className)190 {191 return (*it);192 }193 it++;194 }195 }196 return new LoadClassDescription(className);197 }198 199 /**200 * does the same as addClass(const std::string& className), but with params201 * @param paramName the name of the parameter to add.202 */203 LoadParamDescription* LoadClassDescription::addParam(const std::string& paramName)204 {205 std::list<LoadParamDescription*>::iterator it = this->paramList.begin();206 while (it != this->paramList.end())207 {208 if ((*it)->paramName == paramName)209 {210 return NULL;211 }212 it++;213 }214 215 LoadParamDescription* newParam = new LoadParamDescription(paramName);216 217 this->paramList.push_back(newParam);218 return newParam;219 }220 221 /**222 * prints out all loadable Classes, and their parameters223 * @param fileName prints the output to a File224 * @todo implement it225 */226 void LoadClassDescription::printAll(const std::string& fileName)227 {228 PRINT(3)("===============================================================\n");229 PRINT(3)(" Listing all the Loadable Options (loaded since Game started).\n\n");230 if (LoadClassDescription::classList != NULL)231 {232 std::list<LoadClassDescription*>::iterator classDesc = LoadClassDescription::classList->begin();233 while (classDesc != LoadClassDescription::classList->end())234 {235 PRINT(3)("<%s>\n", (*classDesc)->className.c_str());236 std::list<LoadParamDescription*>::iterator param = (*classDesc)->paramList.begin();237 while (param != (*classDesc)->paramList.end())238 {239 (*param)->print();240 param++;241 }242 PRINT(3)("</%s>\n\n", (*classDesc)->className.c_str());243 classDesc++;244 }245 }246 else247 PRINT(3)("no Classes defined so far\n");248 PRINT(3)("===============================================================\n");249 }250 251 /**252 * searches for classes, which beginn with classNameBegin253 * @param classNameBegin the beginning string of a Class254 * @return a NEW char-array with ClassNames. The LIST should be deleted afterwards,255 * !! The strings MUST NOT be deleted !!256 */257 std::list<std::string> LoadClassDescription::searchClassWithShort(const std::string& classNameBegin)258 {259 /// FIXME260 // NOT USED261 /* unsigned int searchLength = strlen(classNameBegin);262 std::list<const std::string&> retVal;263 264 tIterator<LoadClassDescription>* iterator = LoadClassDescription::classList->getIterator();265 LoadClassDescription* enumClassDesc = iterator->firstElement();266 while (enumClassDesc)267 {268 if (strlen(enumClassDesc->className)>searchLength+1 &&269 !strncasecmp(enumClassDesc->className, classNameBegin, searchLength))270 {271 retVal->add(enumClassDesc->className);272 }273 enumClassDesc = iterator->nextElement();274 }275 delete iterator;276 277 return retVal;*/278 std::list<std::string> a;279 return a;280 }
Note: See TracChangeset
for help on using the changeset viewer.