/* * Copyright 2012 Takao Nakaguchi * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.trie4j.tail; abstract class AbstractTailArray {} /*implements Externalizable, TailArrayBuilder{ protected abstract TailBuilder newTailBuilder(StringBuilder tails); protected abstract TailIndexBuilder newTailIndexBuilder(int initialCapacity); public AbstractTailArray(){ this(1024); } public AbstractTailArray(int initialCapacity){ builder = newTailBuilder(tails); index = newTailIndex(initialCapacity); } public CharSequence getTails(){ return tails; } public TailIndex getTailIndex(){ return index; } @Override public void append(int nodeId, CharSequence letters, int offset, int len) { int ret = builder.insert(letters, offset, len); index.add(nodeId, ret, tails.length()); } @Override public void append(int nodeId, char[] letters, int offset, int len) { int ret = builder.insert(letters, offset, len); index.add(nodeId, ret, tails.length()); } @Override public void appendEmpty(int nodeId) { index.addEmpty(nodeId); } public TailCharIterator newIte(int nodeId){ return new TailCharIterator(tails, index.get(nodeId)); } @Override public TailCharIterator newIterator() { return new TailCharIterator(tails, -1); } @Override public TailCharIterator newIterator(int offset) { return new TailCharIterator(tails, offset); } @Override public int getIteratorOffset(int index) { return this.index.get(index); } public void getChars(StringBuilder builder, int nodeId){ int offset = index.get(nodeId); if(offset == -1) return; TailUtil.appendChars(tails, offset, builder); } @Override public void trimToSize() { tails.trimToSize(); index.trimToSize(); } @Override public TailArray build() { trimToSize(); builder = null; return this; } @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { int n = in.readInt(); tails = new StringBuilder(n); for(int i = 0; i < n; i++){ tails.append(in.readChar()); } builder = newTailBuilder(tails); index = (TailIndex)in.readObject(); } @Override public void writeExternal(ObjectOutput out) throws IOException { int n = tails.length(); out.writeInt(n); for(int i = 0; i < n; i++){ out.writeChar(tails.charAt(i)); } out.writeObject(index); } private StringBuilder tails = new StringBuilder(); private TailBuilder builder; private TailIndex index; }*/