493{
495 int line_start = group_len ? group_len + 5 : 0;
496
497 if (ptr->value == NULL)
498 {
499 fprintf(stderr, "%s %*s :", need_a_comma ? "\n" : "", group_len + 2, ptr->description);
500 need_a_comma = false;
501 line_len = line_start;
502 }
503 else
504 {
505 if (ptr->type == LP_BOOL_PARAMETER)
506 state = * (bool *) ptr->value ? " [ON]" : "";
507 else if (ptr->type == LP_INT_PARAMETER)
508 if (((* (int *) ptr->value == 1) && (ptr->exclusive)) || (* (int *) ptr->value == 0))
509 state = * (int *) ptr->value ? " [ON]" : "";
510 else
511 state = " [", state += * (int *) ptr->value, state += ']';
512 else if (ptr->type == LP_DOUBLE_PARAMETER)
513 if (* (double *) ptr->value != _NAN_)
514 {
515 double value = * (double *) ptr->value;
516
517 state = " [";
518 if (value == 0.0 || value >= 0.01)
519 state.catprintf("%.*f", precision, value);
520 else
521 state.catprintf("%.1e", value);
522 state += ']';
523 }
524 else
525 state = "";
526 else if (ptr->type == LP_STRING_PARAMETER)
527 state =
" [" + * (
String *) ptr->value +
"]";
528
529 int item_len = 3 + strlen(ptr->description) + need_a_comma + state.Length();
530
531 if (item_len + line_len > 78 && line_len > line_start)
532 {
533 line_len = line_start;
534 fprintf(stderr, "%s\n%*s", need_a_comma ? "," : "", line_len, "");
535 need_a_comma = 0;
536 item_len -= 1;
537 }
538
539 fprintf(stderr, "%s --%s%s", need_a_comma ? "," : (need_a_comma = true, ""),
540 ptr->description, (const char *) state);
541
542 need_a_comma = true;
543 line_len += item_len;
544 }
545}