private void incrementArraySize() { if (attributeVisitors == null) { attributeVisitors = new AttributeVisitor[1]; } else { AttributeVisitor[] newAttributeVisitors = new AttributeVisitor[attributeVisitors.length + 1]; System.arraycopy(attributeVisitors, 0, newAttributeVisitors, 0, attributeVisitors.length); attributeVisitors = newAttributeVisitors; } }
/** * Deletes the attributes with the given name from the given array of attributes, returning the * new number of attributes. */ private int deleteAttribute(int attributesCount, Attribute[] attributes, String attributeName) { // Find the attribute. int index = findAttributeIndex(attributesCount, attributes, attributeName); if (index < 0) { return attributesCount; } // Shift the other attributes in the array. System.arraycopy(attributes, index + 1, attributes, index, attributesCount - index - 1); // Clear the last entry in the array. attributes[--attributesCount] = null; return attributesCount; }
/** * Appends the given attribute to the given array of attributes, creating a new array if * necessary. */ private Attribute[] addAttribute( int attributesCount, Attribute[] attributes, Attribute attribute) { // Is the array too small to contain the additional attribute? if (attributes.length <= attributesCount) { // Create a new array and copy the attributes into it. Attribute[] newAttributes = new Attribute[attributesCount + 1]; System.arraycopy(attributes, 0, newAttributes, 0, attributesCount); attributes = newAttributes; } // Append the attribute. attributes[attributesCount] = attribute; return attributes; }