package processing.buffer; import java.util.ArrayList; public interface Storage { public enum Type{ ArrayList } /** * Retourne l'élément d'index id, null si aucun n'y est associé * @param id index de l'élément * @return l'élément /!\ Peut renvoyer null si aucun élément ne correspond à l'index /!\ */ public T get(int id); /** * Modifie un élément à un index donné ou l'ajoute si aucun élément ne correspond à l'index * @param id index de l'élément à modifier ou ajouter * @param value valeur de l'élément * @return la valeur de l'élément précédant /!\ Peut renvoyer null si aucun élément ne correspondait à cet index /!\ */ public T set(int id, T value); /** * Ajoute une élément en fin de liste * @param value valeur de l'élément à ajouter * @return Vrai si l'opération a réussie (mais peut-elle rater?)... */ public boolean add(T value); /** * Supprime un élément de la liste * @param id index de l'élément à supprimer * @return la valeur de l'élément supprimer /!\ Peut renvoyer null si aucun élément ne correspondait à cet index /!\ */ public T remove(int id); /** * Retourne le nombre maximum d'élément de tableau (dernier index +1) * @return la taille de l'espace de stockage */ public int size(); /** * Vérifie si tout les échantillons du stockage sont null * @return Vrai si size() = 0 ou si aucun échantillon n'est stocké dans l'espace disponible */ public boolean isEmpty(); /** * Retourne la liste des indexs associés à des éléments dans le Storage: aucun de ces indexs ne retournera null par get(index) * * @return la liste des indexs de tout les éléments du Storage */ public ArrayList getSamplesIndex(); /** * Génère un iterateur pointant initialement sur le première élément de la liste * @return Un iterateur sur ce stockage */ public StorageIterator getIterator(); /** * Génère un iterateur pointant initialement sur l'élément de la liste correspondant à l'index en argument * @param initialIndex index de l'élément sur lequel pointe initialement l'iterateur * @return Un iterateur sur ce stockage */ public StorageIterator getIterator(int initialIndex); /** * Réserve directement un espace sans modifier la taille du tableau (si la forme si prête) * @param capacity capacité maximale; */ public void tryEnsureCapacity(int capacity); }