Version 1
[yaffs-website] / web / core / lib / Drupal / Core / TypedData / ListInterface.php
diff --git a/web/core/lib/Drupal/Core/TypedData/ListInterface.php b/web/core/lib/Drupal/Core/TypedData/ListInterface.php
new file mode 100644 (file)
index 0000000..1dab39a
--- /dev/null
@@ -0,0 +1,127 @@
+<?php
+
+namespace Drupal\Core\TypedData;
+
+/**
+ * Interface for a list of typed data.
+ *
+ * A list of typed data contains only items of the same type, is ordered and may
+ * contain duplicates. Note that the data type of a list is always 'list'.
+ *
+ * When implementing this interface which extends Traversable, make sure to list
+ * IteratorAggregate or Iterator before this interface in the implements clause.
+ *
+ * @see \Drupal\Core\TypedData\ListDefinitionInterface
+ *
+ * @ingroup typed_data
+ */
+interface ListInterface extends TraversableTypedDataInterface, \ArrayAccess, \Countable {
+
+  /**
+   * Gets the data definition.
+   *
+   * @return \Drupal\Core\TypedData\ListDataDefinitionInterface
+   *   The data definition object describing the list.
+   */
+  public function getDataDefinition();
+
+  /**
+   * Determines whether the list contains any non-empty items.
+   *
+   * @return bool
+   *   TRUE if the list is empty, FALSE otherwise.
+   */
+  public function isEmpty();
+
+  /**
+   * Gets the definition of a contained item.
+   *
+   * @return \Drupal\Core\TypedData\DataDefinitionInterface
+   *   The data definition of contained items.
+   */
+  public function getItemDefinition();
+
+  /**
+   * Returns the item at the specified position in this list.
+   *
+   * @param int $index
+   *   Index of the item to return.
+   *
+   * @return \Drupal\Core\TypedData\TypedDataInterface|null
+   *   The item at the specified position in this list, or NULL if no item
+   *   exists at that position.
+   *
+   * @throws \Drupal\Core\TypedData\Exception\MissingDataException
+   *   If the complex data structure is unset and no item can be created.
+   */
+  public function get($index);
+
+  /**
+   * Sets the value of the item at a given position in the list.
+   *
+   * @param int $index
+   *   The position of the item in the list. Since a List only contains
+   *   sequential, 0-based indexes, $index has to be:
+   *   - Either the position of an existing item in the list. This updates the
+   *   item value.
+   *   - Or the next available position in the sequence of the current list
+   *   indexes. This appends a new item with the provided value at the end of
+   *   the list.
+   * @param mixed $value
+   *   The value of the item to be stored at the specified position.
+   *
+   * @return $this
+   *
+   * @throws \InvalidArgumentException
+   *   If the $index is invalid (non-numeric, or pointing to an invalid
+   *   position in the list).
+   * @throws \Drupal\Core\TypedData\Exception\MissingDataException
+   *   If the complex data structure is unset and no item can be set.
+   */
+  public function set($index, $value);
+
+  /**
+   * Returns the first item in this list.
+   *
+   * @return \Drupal\Core\TypedData\TypedDataInterface
+   *   The first item in this list.
+   *
+   * @throws \Drupal\Core\TypedData\Exception\MissingDataException
+   *   If the complex data structure is unset and no item can be created.
+   */
+  public function first();
+
+  /**
+   * Appends a new item to the list.
+   *
+   * @param mixed $value
+   *   The value of the new item.
+   *
+   * @return \Drupal\Core\TypedData\TypedDataInterface
+   *   The item that was appended.
+   */
+  public function appendItem($value = NULL);
+
+  /**
+   * Removes the item at the specified position.
+   *
+   * @param int $index
+   *   Index of the item to remove.
+   *
+   * @return $this
+   */
+  public function removeItem($index);
+
+  /**
+   * Filters the items in the list using a custom callback.
+   *
+   * @param callable $callback
+   *   The callback to use for filtering. Like with array_filter(), the
+   *   callback is called for each item in the list. Only items for which the
+   *   callback returns TRUE are preserved.
+   *
+   * @return $this
+   */
+  public function filter($callback);
+
+}