/* * parameterfile.h * * Created on: Jul 19, 2011 * Author: muecklgr_local */ #ifndef GLTB_PARAMETERFILE_H_ #define GLTB_PARAMETERFILE_H_ #include #include #ifdef USE_GLM #include #include "glm/glm.hpp" #endif #include "GLTB/referencedobject.h" namespace gltb { class ParameterFile : public ReferencedObject { public: ParameterFile() {}; ParameterFile(std::string filename); bool getBool(std::string paramName, bool defaultValue); void setBool(std::string paramName, bool value); int getInt(std::string paramName, int defaultValue); void setInt(std::string paramName, int value); float getFloat(std::string paramName, float defaultValue); void setFloat(std::string paramName, float value); #ifdef USE_GLM template void setVector2D(std::string paramName, tvec2 value) { std::ostringstream temp; temp << value.x << " " << value.y; paramMap[paramName]=temp.str(); } template glm::tvec2 getVector2D(std::string paramName, glm::tvec2 defaultValue) { if(paramMap.find(paramName)==paramMap.end()) { return defaultValue; } std::istringstream temp(paramMap[paramName]); glm::tvec2 result; temp >> result.x >> result.y; return result; } template glm::tvec3 getVector3D(std::string paramName, glm::tvec3 defaultValue) { if(paramMap.find(paramName)==paramMap.end()) { return defaultValue; } std::istringstream temp(paramMap[paramName]); glm::tvec3 result; temp >> result.x >> result.y >> result.z; return result; } template void setVector3D(std::string paramName, glm::tvec3 value) { std::ostringstream temp; temp << value.x << " " << value.y << " " << value.z; paramMap[paramName]=temp.str(); } template glm::tvec3 getVector4D(std::string paramName, glm::tvec4 defaultValue) { if(paramMap.find(paramName)==paramMap.end()) { return defaultValue; } std::istringstream temp(paramMap[paramName]); glm::tvec4 result; temp >> result.x >> result.y >> result.z >> result.w; return result; } template void setVector4D(std::string paramName, glm::tvec4 value) { std::ostringstream temp; temp << value.x << " " << value.y << " " << value.z << " " << value.w; paramMap[paramName]=temp.str(); } #endif std::string getString(std::string paramName, std::string defaultValue); void setString(std::string paramName, std::string value); void saveFile(std::string filename); private: void parseFile(const char *filename); std::map paramMap; }; } #endif /* GLTB_PARAMETERFILE_H_ */