/* * reserved comment block * DO NOT REMOVE OR ALTER! */ /* * Copyright 2000-2002,2004 The Apache Software Foundation. * * 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 com.sun.org.apache.xerces.internal.util; /** * Synchronized symbol table. * * This class moved into the util package since it's needed by multiple * other classes (CachingParserPool, XMLGrammarCachingConfiguration). * * @author Andy Clark, IBM * @version $Id: SynchronizedSymbolTable.java,v 1.2.6.1 2005/09/05 08:52:12 neerajbj Exp $ */ public final class SynchronizedSymbolTable extends SymbolTable { // // Data // /** Main symbol table. */ protected SymbolTable fSymbolTable; // // Constructors // /** Constructs a synchronized symbol table. */ public SynchronizedSymbolTable(SymbolTable symbolTable) { fSymbolTable = symbolTable; } // <init>(SymbolTable) // construct synchronized symbol table of default size public SynchronizedSymbolTable() { fSymbolTable = new SymbolTable(); } // init() // construct synchronized symbol table of given size public SynchronizedSymbolTable(int size) { fSymbolTable = new SymbolTable(size); } // init(int) // // SymbolTable methods // /** * Adds the specified symbol to the symbol table and returns a * reference to the unique symbol. If the symbol already exists, * the previous symbol reference is returned instead, in order * guarantee that symbol references remain unique. * * @param symbol The new symbol. */ public String addSymbol(String symbol) { synchronized (fSymbolTable) { return fSymbolTable.addSymbol(symbol); } } // addSymbol(String) /** * Adds the specified symbol to the symbol table and returns a * reference to the unique symbol. If the symbol already exists, * the previous symbol reference is returned instead, in order * guarantee that symbol references remain unique. * * @param buffer The buffer containing the new symbol. * @param offset The offset into the buffer of the new symbol. * @param length The length of the new symbol in the buffer. */ public String addSymbol(char[] buffer, int offset, int length) { synchronized (fSymbolTable) { return fSymbolTable.addSymbol(buffer, offset, length); } } // addSymbol(char[],int,int):String /** * Returns true if the symbol table already contains the specified * symbol. * * @param symbol The symbol to look for. */ public boolean containsSymbol(String symbol) { synchronized (fSymbolTable) { return fSymbolTable.containsSymbol(symbol); } } // containsSymbol(String):boolean /** * Returns true if the symbol table already contains the specified * symbol. * * @param buffer The buffer containing the symbol to look for. * @param offset The offset into the buffer. * @param length The length of the symbol in the buffer. */ public boolean containsSymbol(char[] buffer, int offset, int length) { synchronized (fSymbolTable) { return fSymbolTable.containsSymbol(buffer, offset, length); } } // containsSymbol(char[],int,int):boolean } // class SynchronizedSymbolTable