< prev index next >

src/jdk.charsets/share/classes/sun/nio/cs/ext/ISO2022_JP.java

Print this page




 295                         case JISX0208_1983:
 296                             if (sp + inputSize + 1 > sl)
 297                                 return CoderResult.UNDERFLOW;
 298                             b2 = sa[sp + inputSize++] & 0xff;
 299                             c = dec0208.decodeDouble(b1,b2);
 300                             if (c == UNMAPPABLE_DECODING)
 301                                 return CoderResult.unmappableForLength(inputSize);
 302                             da[dp++] = c;
 303                             break;
 304                         case JISX0212_1990:
 305                             if (sp + inputSize + 1 > sl)
 306                                 return CoderResult.UNDERFLOW;
 307                             b2 = sa[sp + inputSize++] & 0xff;
 308                             c = dec0212.decodeDouble(b1,b2);
 309                             if (c == UNMAPPABLE_DECODING)
 310                                 return CoderResult.unmappableForLength(inputSize);
 311                             da[dp++] = c;
 312                             break;
 313                         case JISX0201_1976_KANA:
 314                         case SHIFTOUT:
 315                             if (b1 > 0x60) {
 316                                 return CoderResult.malformedForLength(inputSize);
 317                             }
 318                             da[dp++] = (char)(b1 + 0xff40);
 319                             break;
 320                     }
 321                     sp += inputSize;
 322                 }
 323                 return CoderResult.UNDERFLOW;
 324             } finally {
 325                 src.position(sp - src.arrayOffset());
 326                 dst.position(dp - dst.arrayOffset());
 327             }
 328         }
 329 
 330         private CoderResult decodeBufferLoop(ByteBuffer src,
 331                                              CharBuffer dst)
 332         {
 333             int mark = src.position();
 334             int b1 = 0, b2 = 0, b3 = 0, b4=0;
 335             char c = UNMAPPABLE_DECODING;


 416                                 return CoderResult.UNDERFLOW;
 417                             b2 = src.get() & 0xff;
 418                             inputSize++;
 419                             c = dec0208.decodeDouble(b1,b2);
 420                             if (c == UNMAPPABLE_DECODING)
 421                                 return CoderResult.unmappableForLength(inputSize);
 422                             dst.put(c);
 423                             break;
 424                         case JISX0212_1990:
 425                             if (!src.hasRemaining())
 426                                 return CoderResult.UNDERFLOW;
 427                             b2 = src.get() & 0xff;
 428                             inputSize++;
 429                             c = dec0212.decodeDouble(b1,b2);
 430                             if (c == UNMAPPABLE_DECODING)
 431                                 return CoderResult.unmappableForLength(inputSize);
 432                             dst.put(c);
 433                             break;
 434                         case JISX0201_1976_KANA:
 435                         case SHIFTOUT:
 436                             if (b1 > 0x60) {
 437                                 return CoderResult.malformedForLength(inputSize);
 438                             }
 439                             dst.put((char)(b1 + 0xff40));
 440                             break;
 441                     }
 442                     mark += inputSize;
 443                 }
 444                 return CoderResult.UNDERFLOW;
 445             } finally {
 446                 src.position(mark);
 447             }
 448         }
 449 
 450         // Make some protected methods public for use by JISAutoDetect
 451         public CoderResult decodeLoop(ByteBuffer src, CharBuffer dst) {
 452             if (src.hasArray() && dst.hasArray())
 453                 return decodeArrayLoop(src, dst);
 454             else
 455                 return decodeBufferLoop(src, dst);
 456         }




 295                         case JISX0208_1983:
 296                             if (sp + inputSize + 1 > sl)
 297                                 return CoderResult.UNDERFLOW;
 298                             b2 = sa[sp + inputSize++] & 0xff;
 299                             c = dec0208.decodeDouble(b1,b2);
 300                             if (c == UNMAPPABLE_DECODING)
 301                                 return CoderResult.unmappableForLength(inputSize);
 302                             da[dp++] = c;
 303                             break;
 304                         case JISX0212_1990:
 305                             if (sp + inputSize + 1 > sl)
 306                                 return CoderResult.UNDERFLOW;
 307                             b2 = sa[sp + inputSize++] & 0xff;
 308                             c = dec0212.decodeDouble(b1,b2);
 309                             if (c == UNMAPPABLE_DECODING)
 310                                 return CoderResult.unmappableForLength(inputSize);
 311                             da[dp++] = c;
 312                             break;
 313                         case JISX0201_1976_KANA:
 314                         case SHIFTOUT:
 315                             if (b1 > 0x5f) {
 316                                 return CoderResult.malformedForLength(inputSize);
 317                             }
 318                             da[dp++] = (char)(b1 + 0xff40);
 319                             break;
 320                     }
 321                     sp += inputSize;
 322                 }
 323                 return CoderResult.UNDERFLOW;
 324             } finally {
 325                 src.position(sp - src.arrayOffset());
 326                 dst.position(dp - dst.arrayOffset());
 327             }
 328         }
 329 
 330         private CoderResult decodeBufferLoop(ByteBuffer src,
 331                                              CharBuffer dst)
 332         {
 333             int mark = src.position();
 334             int b1 = 0, b2 = 0, b3 = 0, b4=0;
 335             char c = UNMAPPABLE_DECODING;


 416                                 return CoderResult.UNDERFLOW;
 417                             b2 = src.get() & 0xff;
 418                             inputSize++;
 419                             c = dec0208.decodeDouble(b1,b2);
 420                             if (c == UNMAPPABLE_DECODING)
 421                                 return CoderResult.unmappableForLength(inputSize);
 422                             dst.put(c);
 423                             break;
 424                         case JISX0212_1990:
 425                             if (!src.hasRemaining())
 426                                 return CoderResult.UNDERFLOW;
 427                             b2 = src.get() & 0xff;
 428                             inputSize++;
 429                             c = dec0212.decodeDouble(b1,b2);
 430                             if (c == UNMAPPABLE_DECODING)
 431                                 return CoderResult.unmappableForLength(inputSize);
 432                             dst.put(c);
 433                             break;
 434                         case JISX0201_1976_KANA:
 435                         case SHIFTOUT:
 436                             if (b1 > 0x5f) {
 437                                 return CoderResult.malformedForLength(inputSize);
 438                             }
 439                             dst.put((char)(b1 + 0xff40));
 440                             break;
 441                     }
 442                     mark += inputSize;
 443                 }
 444                 return CoderResult.UNDERFLOW;
 445             } finally {
 446                 src.position(mark);
 447             }
 448         }
 449 
 450         // Make some protected methods public for use by JISAutoDetect
 451         public CoderResult decodeLoop(ByteBuffer src, CharBuffer dst) {
 452             if (src.hasArray() && dst.hasArray())
 453                 return decodeArrayLoop(src, dst);
 454             else
 455                 return decodeBufferLoop(src, dst);
 456         }


< prev index next >