private final int skip_to_end()

in src/com/amazon/ion/impl/IonReaderTextRawTokensX.java [495:587]


    private final int skip_to_end(SavePoint sp)  throws IOException
    {
        int c;

        // FIXME lots of inconsistency here!
        // Sometimes the token's first character is still on the stream,
        // sometimes it's already been consumed.

        switch (_token) {
        case IonTokenConstsX.TOKEN_UNKNOWN_NUMERIC:
            c = skip_over_number(sp);
            break;
        case IonTokenConstsX.TOKEN_INT:
            c = skip_over_int(sp);
            break;
        case IonTokenConstsX.TOKEN_HEX:
            c = skipOverRadix(sp, Radix.HEX);
            break;
        case IonTokenConstsX.TOKEN_BINARY:
            c = skipOverRadix(sp, Radix.BINARY);
            break;
        case IonTokenConstsX.TOKEN_DECIMAL:
            c = skip_over_decimal(sp);
            break;
        case IonTokenConstsX.TOKEN_FLOAT:
            c = skip_over_float(sp);
            break;
        case IonTokenConstsX.TOKEN_TIMESTAMP:
            c = skip_over_timestamp(sp);
            break;
        case IonTokenConstsX.TOKEN_SYMBOL_IDENTIFIER:
            c = skip_over_symbol_identifier(sp);
            break;
        case IonTokenConstsX.TOKEN_SYMBOL_QUOTED:
            // Initial single-quote has been consumed!
            assert(!is_2_single_quotes_helper());
            c = skip_single_quoted_string(sp);
            break;
        case IonTokenConstsX.TOKEN_SYMBOL_OPERATOR:
            // Initial operator char has NOT been consumed
            c = skip_over_symbol_operator(sp);
            break;
        case IonTokenConstsX.TOKEN_STRING_DOUBLE_QUOTE:
            skip_double_quoted_string_helper(); // FIXME Why no sp here?
            c = skip_over_whitespace();
            break;
        case IonTokenConstsX.TOKEN_STRING_TRIPLE_QUOTE:
            skip_triple_quoted_string(sp);
            c = skip_over_whitespace();
            break;

        case IonTokenConstsX.TOKEN_OPEN_DOUBLE_BRACE:
            // works just like a pair of nested structs
            // since "skip_over" doesn't care about formal
            // syntax (like requiring field names);
            skip_over_blob(sp);
            c = read_char();
            break;
        case IonTokenConstsX.TOKEN_OPEN_BRACE:
            assert( sp == null ); // you can't save point a scanned struct (right now anyway)
            skip_over_struct();
            c = read_char();
            break;
        case IonTokenConstsX.TOKEN_OPEN_PAREN:
            skip_over_sexp(); // you can't save point a scanned sexp (right now anyway)
            c = read_char();
            break;
        case IonTokenConstsX.TOKEN_OPEN_SQUARE:
            skip_over_list();  // you can't save point a scanned list (right now anyway)
            c = read_char();
            break;
        case IonTokenConstsX.TOKEN_DOT:
        case IonTokenConstsX.TOKEN_COMMA:
        case IonTokenConstsX.TOKEN_COLON:
        case IonTokenConstsX.TOKEN_DOUBLE_COLON:
        case IonTokenConstsX.TOKEN_CLOSE_PAREN:
        case IonTokenConstsX.TOKEN_CLOSE_BRACE:
        case IonTokenConstsX.TOKEN_CLOSE_SQUARE:
        case IonTokenConstsX.TOKEN_CLOSE_DOUBLE_BRACE:
        case IonTokenConstsX.TOKEN_ERROR:
        case IonTokenConstsX.TOKEN_EOF:
        default:
            c = -1; // makes eclipse happy
            error("token "+IonTokenConstsX.getTokenName(_token)+
                  " unexpectedly encounterd as \"unfinished\"");
            break;
        }
        if (IonTokenConstsX.isWhitespace(c)) {
            c = skip_over_whitespace();
        }
        _unfinished_token = false;
        return c;
    }