function OptPrint()
    {
        $max = 0;
        foreach (self::$_options as $label => $info) {
            $len = strlen($label) + 1;
            switch ($info['type']) {
            case self::OPT_FLAG:
            case self::OPT_FFLAG:
                break;
            case self::OPT_INT:
            case self::OPT_FINT:
                $len += 9;       /* length of "<integer>" */
                break;
            case self::OPT_DBL:
            case self::OPT_FDBL:
                $len += 6;       /* length of "<real>" */
                break;
            case self::OPT_STR:
            case self::OPT_FSTR:
                $len += 8;       /* length of "<string>" */
                break;
            }
            if ($len > $max) {
                $max = $len;
            }
        }
        foreach (self::$_options as $label => $info) {
            switch ($info['type']) {
            case self::OPT_FLAG:
            case self::OPT_FFLAG:
                echo "  -$label";
                echo str_repeat(' ', $max - strlen($label));
                echo "  $info[message]\n";
                break;
            case self::OPT_INT:
            case self::OPT_FINT:
                echo "  $label=<integer>" . str_repeat(' ', $max - strlen($label) - 9);
                echo "  $info[message]\n";
                break;
            case self::OPT_DBL:
            case self::OPT_FDBL:
                echo "  $label=<real>" . str_repeat(' ', $max - strlen($label) - 6);
                echo "  $info[message]\n";
                break;
            case self::OPT_STR:
            case self::OPT_FSTR:
                echo "  $label=<string>" . str_repeat(' ', $max - strlen($label) - 8);
                echo "  $info[message]\n";
                break;
            }
        }
    }