#pragma once #include #include "GenericSlicer.h" #include "Settings.h" namespace WaypointManager { template class ContainerType> class GenericWaypointManager { typedef GenericSlicer Slicer; public: typedef ContainerType WaypointList; GenericWaypointManager() = delete; GenericWaypointManager(Slicer *slicer, Settings *settings); // Waypoint editing. void setWaypoints(const WaypointList &waypoints); void push_back (const WaypointType &wp); void push_front (const WaypointType &wp); void clear (); void insert (int i, const ElementType &wp); uint32_t size () const; WaypointType &at (unsigned int i); const ContainerType &getWaypoints () ; const ContainerType &getSlcieaypoints () ; const ContainerType &missionItems () ; void slice(); void next(); void previous(); void reset(); private: WaypointList _waypoints; WaypointList _slice; bool _sliceValid; Slicer *_slicer; Settings *_settings; }; template class ContainerType> GenericWaypointManager::GenericWaypointManager( Slicer *slicer, Settings *Settings) : _sliceValid(false) , _slicer(slicer) , _settings(_settings) {} } // namespace WaypointManager