/*
 *createLane function
 *
 *p : a pointer to an array of strings represinting a lane
 *
 *this function will take an array of strings represinting a lane
 *and return a struct lane
 */
struct lane *createLane(char **p)
{
  struct lane *l;
  char *temp;
  char **params;
  int now;
  int n = 0;
  int i;
  int numOfCkPts;
  int numOfSps;
  int numOfEts;

  l = malloc(sizeof(struct lane));
  assert( l != 0);
  now = numberOfWords(p[n]);
  assert(now == 2);
  params = divideLine(p[n], now, MAX_STRING_LENGTH);
  assert(params != 0);
  l -> lane_id = createId(params[1]);
  freeCharArray(params, now);
  n++;
  
  now = numberOfWords(p[n]);
  assert(now == 2);
  params = divideLine(p[n], now, MAX_STRING_LENGTH);
  assert(params != 0);
  l -> number_of_waypoints = atoi(params[1]);
  freeCharArray(params, now);
  n++;
  
  temp = "lane_width";
  now = numberOfWords(p[n]);
  params = divideLine(p[n], now, MAX_STRING_LENGTH);
  assert(params != 0);
  if(compTwoStrings(params[0], temp)){
    assert(now == 2);
    l -> lane_width = atoi(params[1]);
    n++;
  }
  else
    l -> lane_width = -1;
  freeCharArray(params, now);

  temp = "left_boundary";
  now = numberOfWords(p[n]);
  params = divideLine(p[n], now, MAX_STRING_LENGTH);
  assert(params != 0);
  if(compTwoStrings(params[0], temp)){
    assert(now == 2);
    l -> left_boundary = malloc(MAX_STRING_LENGTH * sizeof(char));
    stringCopy(params[1],l -> left_boundary);
    n++;
  }
  else
    l -> left_boundary = 0;
  freeCharArray(params, now);
  
  temp = "right_boundary";
  now = numberOfWords(p[n]);
  params = divideLine(p[n], now, MAX_STRING_LENGTH);
  assert(params != 0);
  if(compTwoStrings(params[0], temp)){
    assert(now == 2);
    l -> right_boundary = malloc(MAX_STRING_LENGTH * sizeof(char));
    stringCopy(params[1],l -> right_boundary);
    n++;
  }
  else
    l -> right_boundary = 0;
  freeCharArray(params, now);

  numOfCkPts = 0;
  temp = "checkpoint";
  now = numberOfWords(p[n]);
  params = divideLine(p[n], now, MAX_STRING_LENGTH);
  assert(params != 0);
  while(compTwoStrings(params[0], temp)){
    assert(now == 3);
    freeCharArray(params, now);
    numOfCkPts++;
    now = numberOfWords(p[n + numOfCkPts]);
    params = divideLine(p[n + numOfCkPts], now, MAX_STRING_LENGTH);
    assert(params != 0);
  }
  freeCharArray(params, now);
  l -> number_of_checkpoints = numOfCkPts;
  if(numOfCkPts > 0)
    l -> checkpoints_list = malloc(numOfCkPts * sizeof(struct checkpoint));
  else
    l -> checkpoints_list = 0;
  for(i = 0; i < numOfCkPts; i++){
    l -> checkpoints_list[i] = createCheckpoint(p[n]);
    n++;
  }

  numOfSps = 0;
  temp = "stop";
  now = numberOfWords(p[n]);
  params = divideLine(p[n], now, MAX_STRING_LENGTH);
  assert(params != 0);
  while(compTwoStrings(params[0], temp)){
    assert(now == 2);
    freeCharArray(params, now);
    numOfSps++;
    now = numberOfWords(p[n + numOfSps]);
    params = divideLine(p[n + numOfSps], now, MAX_STRING_LENGTH);
    assert(params != 0);
  }
  freeCharArray(params, now);
  l -> number_of_stops = numOfSps;
  if(numOfSps > 0)
    l -> stops_list = malloc(numOfSps * sizeof(struct stop));
  else
    l -> stops_list = 0;
  for(i = 0; i < numOfSps; i++){
    l -> stops_list[i] = createStop(p[n]);
    n++;
  }

  numOfEts = 0;
  temp = "exit";
  now = numberOfWords(p[n]);
  params = divideLine(p[n], now, MAX_STRING_LENGTH);
  assert(params != 0);
  while(compTwoStrings(params[0], temp)){
    assert(now == 3);
    freeCharArray(params, now);
    numOfEts++;
    now = numberOfWords(p[n + numOfEts]);
    params = divideLine(p[n + numOfEts], now, MAX_STRING_LENGTH);
    assert(params != 0);
  }
  freeCharArray(params, now);
  l -> number_of_exits = numOfEts;
  if(numOfEts > 0)
    l -> exits_list = malloc(numOfEts * sizeof(struct stop));
  else
    l -> exits_list = 0;
  for(i = 0; i < numOfEts; i++){
    l -> exits_list[i] = createExit(p[n]);
    n++;
  }

  l -> waypoints_list = malloc(
			       (l -> number_of_waypoints) * 
			       sizeof(struct waypoint));
  assert((l -> waypoints_list) != 0);
  for(i = 0; i < l -> number_of_waypoints; i++){
    l -> waypoints_list[i] = createWaypoint(p[n]);
    n++;
  }

  return l;
}
Example #2
0
bool MapHelperUniversal::keyPress(QKeyEvent *event)
{
    Q_UNUSED(event);
#if 0
    Q_D(MapHelperUniversal);
    switch (event->key()) {
    case Qt::Key_Q: {
        if (Qt::NoModifier == event->modifiers()) {
            move();
            qDebug() << "Move On";
        }
        else if (Qt::ShiftModifier == event->modifiers()) {
            moveStop();
            qDebug() << "Move Off";
        }
        break;
    }
    case Qt::Key_W: {
        if (Qt::NoModifier == event->modifiers()) {
            rotate();
            qDebug() << "Rotate On";
        }
        else if (Qt::ShiftModifier == event->modifiers()) {
            rotateStop();
            qDebug() << "Rotate Off";
        }
        break;
    }
    case Qt::Key_E: {
        if (Qt::NoModifier == event->modifiers()) {
            scale();
            qDebug() << "Scale On";
        }
        else if (Qt::ShiftModifier == event->modifiers()) {
            scaleStop();
            qDebug() << "Scalse Off";
        }
        break;
    }
    case Qt::Key_R: {
        if (Qt::NoModifier == event->modifiers()) {
            select();
            qDebug() << "Select On";
        }
        else if (Qt::ShiftModifier == event->modifiers()) {
            selectStop();
            qDebug() << "Select Off";
        }
        break;
    }
    case Qt::Key_T: {
        if (Qt::NoModifier == event->modifiers()) {
            edit();
            qDebug() << "Edit On";
        }
        else if (Qt::ShiftModifier == event->modifiers()) {
            editStop();
            qDebug() << "Edit Off";
        }
        break;
    }
    case Qt::Key_Y: {
        if (Qt::NoModifier == event->modifiers()) {
            create();
            qDebug() << "Create On";
        }
        else if (Qt::ShiftModifier == event->modifiers()) {
            createStop();
            qDebug() << "Create Off";
        }
        break;
    }
    case Qt::Key_A: {
        qDebug() << "Custom No On";
        d->customAction = 0;
        break;
    }
    case Qt::Key_S: {
        qDebug() << "Custom Move On";
        d->customAction = 1;
        break;
    }
    case Qt::Key_D: {
        qDebug() << "Custom Select On";
        d->customAction = 2;
        break;
    }
    case Qt::Key_F: {
        qDebug() << "Custom Edit On";
        d->customAction = 4;
        break;
    }
    case Qt::Key_G: {
        qDebug() << "Custom Create On";
        d->customAction = 3;
        break;
    }
    default:
        qDebug() << event;
        break;
    }

    QString types = "";
    foreach (MapSubHelper *sub, d->subhelpers)
        types += QString::number(sub->type()) + " ";
    qDebug() << types;
#endif

    return true;
}