13e46e4ee56c8e37158f46941dedd5b436d724baaKenny Root/* 23e46e4ee56c8e37158f46941dedd5b436d724baaKenny Root * Copyright 2014 The Android Open Source Project 33e46e4ee56c8e37158f46941dedd5b436d724baaKenny Root * 43e46e4ee56c8e37158f46941dedd5b436d724baaKenny Root * Licensed under the Apache License, Version 2.0 (the "License"); 53e46e4ee56c8e37158f46941dedd5b436d724baaKenny Root * you may not use this file except in compliance with the License. 63e46e4ee56c8e37158f46941dedd5b436d724baaKenny Root * You may obtain a copy of the License at 73e46e4ee56c8e37158f46941dedd5b436d724baaKenny Root * 83e46e4ee56c8e37158f46941dedd5b436d724baaKenny Root * http://www.apache.org/licenses/LICENSE-2.0 93e46e4ee56c8e37158f46941dedd5b436d724baaKenny Root * 103e46e4ee56c8e37158f46941dedd5b436d724baaKenny Root * Unless required by applicable law or agreed to in writing, software 113e46e4ee56c8e37158f46941dedd5b436d724baaKenny Root * distributed under the License is distributed on an "AS IS" BASIS, 123e46e4ee56c8e37158f46941dedd5b436d724baaKenny Root * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133e46e4ee56c8e37158f46941dedd5b436d724baaKenny Root * See the License for the specific language governing permissions and 143e46e4ee56c8e37158f46941dedd5b436d724baaKenny Root * limitations under the License. 153e46e4ee56c8e37158f46941dedd5b436d724baaKenny Root */ 163e46e4ee56c8e37158f46941dedd5b436d724baaKenny Root 173e46e4ee56c8e37158f46941dedd5b436d724baaKenny Rootpackage org.conscrypt.util; 183e46e4ee56c8e37158f46941dedd5b436d724baaKenny Root 193e46e4ee56c8e37158f46941dedd5b436d724baaKenny Root/** 203e46e4ee56c8e37158f46941dedd5b436d724baaKenny Root * Compatibility utility for Arrays. 213e46e4ee56c8e37158f46941dedd5b436d724baaKenny Root */ 223e46e4ee56c8e37158f46941dedd5b436d724baaKenny Rootpublic final class Arrays { 233e46e4ee56c8e37158f46941dedd5b436d724baaKenny Root private Arrays() { 243e46e4ee56c8e37158f46941dedd5b436d724baaKenny Root } 253e46e4ee56c8e37158f46941dedd5b436d724baaKenny Root 263e46e4ee56c8e37158f46941dedd5b436d724baaKenny Root /** 273e46e4ee56c8e37158f46941dedd5b436d724baaKenny Root * Checks that the range described by {@code offset} and {@code count} 283e46e4ee56c8e37158f46941dedd5b436d724baaKenny Root * doesn't exceed {@code arrayLength}. 293e46e4ee56c8e37158f46941dedd5b436d724baaKenny Root * 303e46e4ee56c8e37158f46941dedd5b436d724baaKenny Root * @hide 313e46e4ee56c8e37158f46941dedd5b436d724baaKenny Root */ 323e46e4ee56c8e37158f46941dedd5b436d724baaKenny Root public static final void checkOffsetAndCount(int arrayLength, int offset, int count) { 333e46e4ee56c8e37158f46941dedd5b436d724baaKenny Root if ((offset | count) < 0 || offset > arrayLength || arrayLength - offset < count) { 343e46e4ee56c8e37158f46941dedd5b436d724baaKenny Root throw new ArrayIndexOutOfBoundsException("length=" + arrayLength + "; regionStart=" 353e46e4ee56c8e37158f46941dedd5b436d724baaKenny Root + offset + "; regionLength=" + count); 363e46e4ee56c8e37158f46941dedd5b436d724baaKenny Root } 373e46e4ee56c8e37158f46941dedd5b436d724baaKenny Root } 383e46e4ee56c8e37158f46941dedd5b436d724baaKenny Root} 39