/** * Copyright 2009 Google Inc. * * 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.waveprotocol.wave.model.util; import java.util.Set; /** * A read only interface to a set of strings. * * We define this in favor of using a standard Java collections interface so * that we can write an optimized implementation for GWT. * * Null is not permitted as an element. All methods, even {@link #contains(String)} * will reject null elements. * * @author ohler@google.com (Christian Ohler) */ public interface ReadableStringSet { /** * A procedure that accepts an element from the set. */ public interface Proc { void apply(String element); } /** * Returns true iff s is in the set. */ boolean contains(String s); /** * @return some element in the set. If the set is empty, null is returned. */ String someElement(); /** * Returns true iff the set is empty. */ boolean isEmpty(); /** * Call the callback for each element in the map, in undefined order. */ void each(Proc callback); /** * Returns true iff every element of this is also in other. */ boolean isSubsetOf(ReadableStringSet other); /** * Returns true iff every element of this is also in other. */ boolean isSubsetOf(Set<String> other); /** * Count the number of entries in the set. * * Note: Depending on the underlying map implementation, this may be a * time-consuming operation. */ int countEntries(); }