/* Copyright (C) 2011 ApPeAL Group, Politecnico di Torino This file is part of TraCI4J. TraCI4J is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. TraCI4J is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with TraCI4J. If not, see <http://www.gnu.org/licenses/>. */ package it.polito.appeal.traci.protocol; import it.polito.appeal.traci.TraCIException; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.ListIterator; import de.uniluebeck.itm.tcpip.Storage; public class StringList implements List<String> { private final List<String> list; public StringList() { list = new ArrayList<String>(); } public StringList(List<String> list) { this.list = list; } public StringList(Storage storage, boolean verifyType) throws TraCIException { if (verifyType) { if (storage.readByte() != Constants.TYPE_STRINGLIST) throw new TraCIException("string list expected"); } int len = storage.readInt(); list = new ArrayList<String>(len); for (int i=0; i<len; i++) { list.add(storage.readStringASCII()); } } public void writeTo(Storage out, boolean writeTypeID) { if (writeTypeID) out.writeByte(Constants.TYPE_STRINGLIST); out.writeInt(list.size()); for (String str : list) out.writeStringASCII(str); } @Override public String toString() { return list.toString(); } /** * @param index * @param element * @see java.util.List#add(int, java.lang.Object) */ @Override public void add(int index, String element) { list.add(index, element); } /** * @param e * @see java.util.List#add(java.lang.Object) */ @Override public boolean add(String e) { return list.add(e); } /** * @param c * @see java.util.List#addAll(java.util.Collection) */ @Override public boolean addAll(Collection<? extends String> c) { return list.addAll(c); } /** * @param index * @param c * @see java.util.List#addAll(int, java.util.Collection) */ @Override public boolean addAll(int index, Collection<? extends String> c) { return list.addAll(index, c); } /** * * @see java.util.List#clear() */ @Override public void clear() { list.clear(); } /** * @param o * @see java.util.List#contains(java.lang.Object) */ @Override public boolean contains(Object o) { return list.contains(o); } /** * @param c * @see java.util.List#containsAll(java.util.Collection) */ @Override public boolean containsAll(Collection<?> c) { return list.containsAll(c); } /** * @param o * @see java.util.List#equals(java.lang.Object) */ @Override public boolean equals(Object o) { return list.equals(o); } /** * @param index * @see java.util.List#get(int) */ @Override public String get(int index) { return list.get(index); } /** * @see java.util.List#hashCode() */ @Override public int hashCode() { return list.hashCode(); } /** * @param o * @see java.util.List#indexOf(java.lang.Object) */ @Override public int indexOf(Object o) { return list.indexOf(o); } /** * @see java.util.List#isEmpty() */ @Override public boolean isEmpty() { return list.isEmpty(); } /** * @see java.util.List#iterator() */ @Override public Iterator<String> iterator() { return list.iterator(); } /** * @param o * @see java.util.List#lastIndexOf(java.lang.Object) */ @Override public int lastIndexOf(Object o) { return list.lastIndexOf(o); } /** * @see java.util.List#listIterator() */ @Override public ListIterator<String> listIterator() { return list.listIterator(); } /** * @param index * @see java.util.List#listIterator(int) */ @Override public ListIterator<String> listIterator(int index) { return list.listIterator(index); } /** * @param index * @see java.util.List#remove(int) */ @Override public String remove(int index) { return list.remove(index); } /** * @param o * @see java.util.List#remove(java.lang.Object) */ @Override public boolean remove(Object o) { return list.remove(o); } /** * @param c * @see java.util.List#removeAll(java.util.Collection) */ @Override public boolean removeAll(Collection<?> c) { return list.removeAll(c); } /** * @param c * @see java.util.List#retainAll(java.util.Collection) */ @Override public boolean retainAll(Collection<?> c) { return list.retainAll(c); } /** * @param index * @param element * @see java.util.List#set(int, java.lang.Object) */ @Override public String set(int index, String element) { return list.set(index, element); } /** * @see java.util.List#size() */ @Override public int size() { return list.size(); } /** * @param fromIndex * @param toIndex * @see java.util.List#subList(int, int) */ @Override public List<String> subList(int fromIndex, int toIndex) { return list.subList(fromIndex, toIndex); } /** * @see java.util.List#toArray() */ @Override public Object[] toArray() { return list.toArray(); } /** * @param <T> * @param a * @see java.util.List#toArray(Object[]) */ @Override public <T> T[] toArray(T[] a) { return list.toArray(a); } }