/*
 * Copyright (c) 2007, 2011, 2012, 2015, 2019 Eike Stepper (Loehne, Germany) 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:
 *    Eike Stepper - initial API and implementation
 */
package org.eclipse.net4j.util.container;

/**
 * Describes the addition or removal of a single element from a {@link IContainer container}.
 *
 * @author Eike Stepper
 */
public interface IContainerDelta<E>
{
  public E getElement();

  public Kind getKind();

  /**
   * Enumerates the possible {@link IContainerDelta container delta} kinds {@link #ADDED} or {@link #REMOVED}.
   *
   * @author Eike Stepper
   */
  public enum Kind
  {
    ADDED, REMOVED
  }
}
