001package org.jsoup.parser;
002
003import java.util.ArrayList;
004
005/**
006 * A container for ParseErrors.
007 * 
008 * @author Jonathan Hedley
009 */
010public class ParseErrorList extends ArrayList<ParseError>{
011    private static final int INITIAL_CAPACITY = 16;
012    private final int initialCapacity;
013    private final int maxSize;
014    
015    ParseErrorList(int initialCapacity, int maxSize) {
016        super(initialCapacity);
017        this.initialCapacity = initialCapacity;
018        this.maxSize = maxSize;
019    }
020
021    /**
022     Create a new ParseErrorList with the same settings, but no errors in the list
023     @param copy initial and max size details to copy
024     */
025    ParseErrorList(ParseErrorList copy) {
026        this(copy.initialCapacity, copy.maxSize);
027    }
028    
029    boolean canAddError() {
030        return size() < maxSize;
031    }
032
033    int getMaxSize() {
034        return maxSize;
035    }
036
037    public static ParseErrorList noTracking() {
038        return new ParseErrorList(0, 0);
039    }
040    
041    public static ParseErrorList tracking(int maxSize) {
042        return new ParseErrorList(INITIAL_CAPACITY, maxSize);
043    }
044
045    @Override
046    public Object clone() {
047        // all class fields are primitive, so native clone is enough.
048        return super.clone();
049    }
050}