1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/* 2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this work for additional information regarding copyright ownership. 5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * (the "License"); you may not use this file except in compliance with 7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the License. You may obtain a copy of the License at 8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and 15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License. 16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage java.nio; 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/** 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * CharArrayBuffer, ReadWriteCharArrayBuffer and ReadOnlyCharArrayBuffer compose 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the implementation of array based char buffers. 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p> 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * ReadOnlyCharArrayBuffer extends CharArrayBuffer with all the write methods 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throwing read only exception. 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * </p> 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p> 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * This class is marked final for runtime performance. 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * </p> 30f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectfinal class ReadOnlyCharArrayBuffer extends CharArrayBuffer { 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project static ReadOnlyCharArrayBuffer copy(CharArrayBuffer other, int markOfOther) { 3517b2f493468764dc1f237c02d94747d122dbd101Elliott Hughes ReadOnlyCharArrayBuffer buf = 3617b2f493468764dc1f237c02d94747d122dbd101Elliott Hughes new ReadOnlyCharArrayBuffer(other.capacity(), other.backingArray, other.offset); 370c53cf8b2c46deb41e91db50ddc17d598cc64a10Elliott Hughes buf.limit = other.limit; 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project buf.position = other.position(); 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project buf.mark = markOfOther; 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return buf; 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ReadOnlyCharArrayBuffer(int capacity, char[] backingArray, int arrayOffset) { 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super(capacity, backingArray, arrayOffset); 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 47eaa2ff09069424b0f7a95c7cd831cef1b744fe67Jesse Wilson @Override 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public CharBuffer asReadOnlyBuffer() { 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return duplicate(); 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 52eaa2ff09069424b0f7a95c7cd831cef1b744fe67Jesse Wilson @Override 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public CharBuffer compact() { 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new ReadOnlyBufferException(); 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 57eaa2ff09069424b0f7a95c7cd831cef1b744fe67Jesse Wilson @Override 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public CharBuffer duplicate() { 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return copy(this, mark); 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 62eaa2ff09069424b0f7a95c7cd831cef1b744fe67Jesse Wilson @Override 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean isReadOnly() { 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return true; 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 67bdd17cde8cf675f5d5703aad4dfb565932fb4c50Elliott Hughes @Override char[] protectedArray() { 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new ReadOnlyBufferException(); 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 71bdd17cde8cf675f5d5703aad4dfb565932fb4c50Elliott Hughes @Override int protectedArrayOffset() { 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new ReadOnlyBufferException(); 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 75bdd17cde8cf675f5d5703aad4dfb565932fb4c50Elliott Hughes @Override boolean protectedHasArray() { 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return false; 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 79eaa2ff09069424b0f7a95c7cd831cef1b744fe67Jesse Wilson @Override 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public CharBuffer put(char c) { 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new ReadOnlyBufferException(); 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 84eaa2ff09069424b0f7a95c7cd831cef1b744fe67Jesse Wilson @Override 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public CharBuffer put(int index, char c) { 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new ReadOnlyBufferException(); 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 89eaa2ff09069424b0f7a95c7cd831cef1b744fe67Jesse Wilson @Override 900e1b748ecabf720065a632f28330f5d4d037d5aeElliott Hughes public final CharBuffer put(char[] src, int srcOffset, int charCount) { 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new ReadOnlyBufferException(); 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 93eaa2ff09069424b0f7a95c7cd831cef1b744fe67Jesse Wilson 94eaa2ff09069424b0f7a95c7cd831cef1b744fe67Jesse Wilson @Override 95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public final CharBuffer put(CharBuffer src) { 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new ReadOnlyBufferException(); 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 99eaa2ff09069424b0f7a95c7cd831cef1b744fe67Jesse Wilson @Override 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public CharBuffer put(String src, int start, int end) { 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new ReadOnlyBufferException(); 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 104eaa2ff09069424b0f7a95c7cd831cef1b744fe67Jesse Wilson @Override 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public CharBuffer slice() { 10617b2f493468764dc1f237c02d94747d122dbd101Elliott Hughes return new ReadOnlyCharArrayBuffer(remaining(), backingArray, offset + position); 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 109