/** * Copyright (c) 2002-2007 IBM Corporation 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: * IBM - Initial API and implementation */ package org.eclipse.emf.ecore.util; import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.ListIterator; import org.eclipse.emf.common.notify.NotificationChain; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.emf.ecore.ETypedElement; /** * An interface that the {@link EObject#eGet(EStructuralFeature) value} of {@link ETypedElement#isMany() multi-valued} {@link EStructuralFeature feature} * is expected to implement. * Clients should generally extend one of the the existing lists that implement this API to better accommodate the addition of methods, * e.g., * {@link AbstractSequentialInternalEList}, * {@link BasicInternalEList}, * {@link NotifyingInternalEListImpl}, * {@link DelegatingNotifyingInternalEListImpl}, * {@link EcoreEList.UnmodifiableEList}, * {@link DelegatingEcoreEList.UnmodifiableEList}, * or a subclass of one of the above. */ public interface InternalEList<E> extends EList<E> { /** * Returns the unresolved value. */ E basicGet(int index); /** * Returns an unmodifiable list that yields unresolved values. */ List<E> basicList(); /** * Returns an iterator that yields unresolved values. */ Iterator<E> basicIterator(); /** * Returns a list iterator that yields unresolved values. */ ListIterator<E> basicListIterator(); /** * Returns a list iterator that yields unresolved values. */ ListIterator<E> basicListIterator(int index); /** * Returns the array with unresolved values. * @since 2.4 */ Object[] basicToArray(); /** * Returns the array with unresolved values. * @since 2.4 */ <T> T[] basicToArray(T[] array); /** * Returns the index of the object within the list of unresolved values. * @since 2.4 */ int basicIndexOf(Object object); /** * Returns the last index of the object within the list of unresolved values. * @since 2.4 */ int basicLastIndexOf(Object object); /** * Returns whether the object is contained within the list of unresolved values. * @since 2.4 */ boolean basicContains(Object object); /** * Returns whether each object in the collection is contained within the list of unresolved values. * @since 2.4 */ boolean basicContainsAll(Collection<?> collection); /** * Removes the object with without updating the inverse. */ NotificationChain basicRemove(Object object, NotificationChain notifications); /** * Adds the object without updating the inverse. */ NotificationChain basicAdd(E object, NotificationChain notifications); /** * Adds the object without verifying uniqueness. */ void addUnique(E object); /** * Adds the object without verifying uniqueness. */ void addUnique(int index, E object); /** * Adds the objects without verifying uniqueness. * @since 2.4 */ boolean addAllUnique(Collection<? extends E> collection); /** * Adds the objects without verifying uniqueness. * @since 2.4 */ boolean addAllUnique(int index, Collection<? extends E> collection); /** * Sets the object without verifying uniqueness. */ E setUnique(int index, E object); /** * Additional API for unsettable lists. */ interface Unsettable<E> extends InternalEList<E> { /** * Returns whether a value is held by the feature of the object. * @return whether a value is held by the feature of the object. * @see org.eclipse.emf.ecore.EObject#eIsSet(org.eclipse.emf.ecore.EStructuralFeature) */ boolean isSet(); /** * Unsets the value held by the feature of the object. * @see org.eclipse.emf.ecore.EObject#eUnset(org.eclipse.emf.ecore.EStructuralFeature) */ void unset(); } }