//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
-// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
// $Id$
#define _ROUTE_HXX
-#ifndef __cplusplus
+#ifndef __cplusplus
# error This library requires C++
-#endif
+#endif
#include <simgear/compiler.h>
}
/**
- * Add a waypoint.
+ * Add waypoint (default), or insert waypoint at position n.
* @param wp a waypoint
*/
- inline void add_waypoint( const SGWayPoint &wp ) {
- route.push_back( wp );
+ void add_waypoint( const SGWayPoint &wp, int n = -1 ) {
+ if ( n < 0 || n >= (int)route.size() )
+ route.push_back( wp );
+ else
+ route.insert( route.begin() + n, 1, wp );
int size = route.size();
if ( size > 1 ) {
}
/** Delete the front waypoint */
- inline void delete_first() {
- if ( route.size() ) {
- route.erase( route.begin() );
- }
+ inline void delete_first() { delete_waypoint(0); }
+
+ /** Delete waypoint waypoint with index n (last one if n < 0) */
+ void delete_waypoint( int n = 0 ) {
+ if ( !route.size() )
+ return;
+ if ( n < 0 || n >= (int)route.size() )
+ n = route.size() - 1;
+
+ route.erase( route.begin() + n );
}
/**