Code example for CharBuffer

Methods: array, arrayOffset, limit, position

0
            byte[] sa = src.array();
            int sp = src.arrayOffset() + src.position();
            int sl = src.arrayOffset() + src.limit();
            assert (sp <= sl);
            sp = (sp <= sl ? sp : sl);
            char[] da = dst.array();
            int dp = dst.arrayOffset() + dst.position();
            int dl = dst.arrayOffset() + dst.limit();
            assert (dp <= dl);
            dp = (dp <= dl ? dp : dl);
 
 
            try { 
                while (sp < sl) {
                    if ( sl - sp < 2) {
                        return CoderResult.UNDERFLOW;
                    } 
                    int b1 = sa[sp] & 0xFF | 0x80;
                    int b2 = sa[sp + 1] & 0xFF | 0x80;
                    char c = decodeDouble(b1, b2);
                    if (c == replacement().charAt(0)) {
                        return CoderResult.unmappableForLength(2);
                    } 
                    if (dl - dp < 1)
                        return CoderResult.OVERFLOW;
                    da[dp++] = c;
                    sp +=2;
                } 
                return CoderResult.UNDERFLOW;
            } finally { 
                src.position(sp - src.arrayOffset());
                dst.position(dp - dst.arrayOffset());
            } 
 
        } 
    } 
}