1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
template<typename T, typename InPlaceFactoryT>
void init(TiXmlElement *root, std::vector<T*>& container, InPlaceFactoryT const& usine)
{
TiXmlElement* elem = root;
//on récupère le nombre d'éléments dans le fichier
size_t l_count = loadElement<size_t>(elem, "count");
//on réserve la place mémoire
T* beg = reinterpret_cast<T*>(new char[l_count*sizeof(T)]);
//iteration
T* it = beg;
elem = elem->FirstChildElement("item");
while (elem)
{
usine.template apply<T>(current);
container.push_back(it);
++it;
elem = elem->NextSiblingElement("item"); // iteration
}
} |
Partager