1/* 2 * Copyright 2021, Andrew Lindesay <apl@lindesay.co.nz> 3 * All rights reserved. Distributed under the terms of the MIT License. 4 */ 5#ifndef COLLECTOR_H 6#define COLLECTOR_H 7 8 9#include <vector> 10 11 12template <typename T> 13class Collector { 14public: 15 virtual void Add(T value) = 0; 16}; 17 18 19template <typename T> 20class VectorCollector : public Collector<T> { 21public: 22 VectorCollector(std::vector<T>& target) 23 : 24 fTarget(target) 25 { 26 } 27 28 virtual void Add(T value) { 29 fTarget.push_back(value); 30 } 31 32private: 33 std::vector<T>& fTarget; 34}; 35 36 37#endif // COLLECTOR_H 38