#pragma once #include "common/basicTypes.h" #include template inline Vec& operator+=(Vec& lhs, Vec&& rhs) // Combine 2 vectors { lhs.reserve(lhs.size() + rhs.size()); for(auto& el: rhs) lhs.push_back( std::forward(el) ); return lhs; } template inline Vec& operator+=(Vec& lhs, const Vec& rhs) // Combine 2 vectors { lhs.reserve(lhs.size() + rhs.size()); for(const auto& el: rhs) lhs.push_back( std::forward(el) ); return lhs; } template inline void remove(Vec& vec, size_t pos) /* Remove from vector by moving the last element in its place */ { vec[pos] = vec[vec.size() - 1]; vec.pop_back(); } inline I32 max(I32 a, I32 b) { return a >= b ? a : b; }