/******************************************************************************* * Copyright (c) 2009, 2010 Wind River Systems, Inc. and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Markus Schorn - initial API and implementation * Sergey Prigogin (Google) *******************************************************************************/ package org.eclipse.cdt.internal.core.parser.scanner; /** * Wrapper around char[] to implement {@link AbstractCharArray}. */ public final class CharArray extends AbstractCharArray { private final char[] fArray; private long hash64; public CharArray(char[] array) { fArray= array; } public CharArray(String str) { fArray= str.toCharArray(); } public char[] getArray() { return fArray; } @Override public int getLength() { return fArray.length; } @Override public int tryGetLength() { return fArray.length; } @Override public char get(int pos) { return fArray[pos]; } @Override public void arraycopy(int offset, char[] destination, int destPos, int length) { System.arraycopy(fArray, offset, destination, destPos, length); } @Override public boolean isValidOffset(int offset) { return offset < fArray.length; } @Override public long getContentsHash() { if (hash64 == 0 && fArray.length != 0) { StreamHasher hasher = new StreamHasher(); hasher.addChunk(fArray); hash64 = hasher.computeHash(); } return hash64; } }