Question about function usage of dwLanePlanner_run

Dear whom it may concern,

When I looked at the planner document, I found this function:

DW_API_PUBLIC dwStatus <b>dwLanePlanner_run</b>(
const dwMapsLane * 	      startLane,
const dwMapsRoadSegment *     targetRoadSegment,
const dwMapsGeoPoint * 	      gpsPathPoints,
uint32_t 	              gpsPathPointCount,
bool 	                      ignoreHeight,
dwLanePlannerCostFunction_t   costFn,
void * 	                      costFnContext,
dwLanePlanHandle_t 	      lanePlan,
dwLanePlannerHandle_t 	      lanePlanner 
)

It receives const dwMapsGeoPoint * gpsPathPoints as a set of GPS points to form a path. However, to my understand that a path can only be formed with multiple GPS points, therefore, this gpsPathPoints shall be an array of {Pt1, Pt2, Pt3, …}. When I look at the sample/maps/common/LanePlannerAppCommon.cpp, it is used like this:

dwStatus status = dwLanePlanner_run(nullptr, nullptr, &routeInputPoints[0], routeInputPoints.size(),
                                    true, nullptr, nullptr, m_lanePlanHandle, m_lanePlanner);

Question:

  1. The routeInputPoints is a std::vector, so does the planner only accepts the first point's address (&routeInputPoints[0])? Then how the other path points are used in this vector?
  2. Moreover, what is the usage of gapPathPointCount variable? It's meaning is "Number of provided gps path points", then if we provide 10 gps path points, but the gpsPathPoints only accept one point?

Thanks a lot for your help!

Even if it passes only a pointer to the first element of the array, lane planner can still access all the elements in the array. Thanks!