// This file is a part of Framsticks SDK. http://www.framsticks.com/ // Copyright (C) 1999-2015 Maciej Komosinski and Szymon Ulatowski. // See LICENSE.txt for details. #ifndef _UTIL_STL_H_ #define _UTIL_STL_H_ #include "nonstd_stl.h" template void push_back(vector& v, T(&d)[N]) { for (unsigned int i = 0; i < N; i++) v.push_back(d[i]); } template void erase(vector& v, const T& e) { typename vector::iterator it = std::find(v.begin(), v.end(), e); if (it != v.end()) v.erase(it); } template void deleteVectorElements(vector& v) { for (typename vector::iterator it = v.begin(); it != v.end(); it++) delete *it; v.clear(); } template int findIndex(vector& v, const T& e) { typename vector::iterator it = find(v.begin(), v.end(), e); if (it != v.end()) return &*it - &v.front(); return -1; } template class DeletingVector // deletes the elements (pointers) in destructor { public: std::vector vector; ~DeletingVector() { for (int i = vector.size() - 1; i >= 0; i--) delete vector[i]; } T* operator[](int i) { return vector[i]; } int size() { return vector.size(); } void push_back(T* x) { vector.push_back(x); } }; #endif