4 // Need to define getData()
6 T XMLDataManager::getData(std::string dataType, unsigned int key) {
7 XMLData* dataPtr = getDataCache(dataType)->findItem(key);
8 if(!dataPtr) return T();
9 T* data = static_cast<T*>(dataPtr);
13 // Need to specialize XMLDataManager::readValue()
15 bool XMLDataManager::readValue(rapidxml::xml_node<>* parent, std::string valueName, std::string& variable);
17 bool XMLDataManager::readValue(rapidxml::xml_node<>* parent, std::string valueName, unsigned int& variable);
19 bool XMLDataManager::readValue(rapidxml::xml_node<>* parent, std::string valueName, std::vector<unsigned int>& variable);
21 bool XMLDataManager::readValue(rapidxml::xml_node<>* parent, std::string valueName, int& variable);
23 bool XMLDataManager::readValue(rapidxml::xml_node<>* parent, std::string valueName, float& variable);
25 bool XMLDataManager::readValue(rapidxml::xml_node<>* parent, std::string valueName, std::vector<float>& variable);
27 bool XMLDataManager::readValue(rapidxml::xml_node<>* parent, std::string valueName, bool& variable);
29 bool XMLDataManager::readValue(rapidxml::xml_node<>* parent, std::string valueName, std::vector<bool>& variable);
31 bool XMLDataManager::readValue(rapidxml::xml_node<>* parent, std::string valueName, glm::vec2& variable);
33 bool XMLDataManager::readValue(rapidxml::xml_node<>* parent, std::string valueName, std::vector<glm::vec2>& variable);
36 void XMLDataManager::addDataType() {
37 // Make sure that T is actually a child class of XMLData
38 static_assert(std::is_base_of<XMLData, T>::value, "XML Data Type is not derived class of BARE2D::XMLData");
42 m_dataTypingFunctions[sample.nodeName] = []() -> XMLData* { return new T; };