package uk.co.mmscomputing.imageio.pdf;
import java.io.*;
import java.util.*;
public class PDFIndirectObjects{
private Vector list;
public PDFIndirectObjects(){
list = new Vector();
addNotInUse(65535);
}
public int getSize(){
return list.size();
}
public PDFIndirectObject add(PDFObject object){
PDFIndirectObject obj = new PDFIndirectObject(list.size(),object);
list.add(obj);
return obj;
}
public PDFIndirectObject add(int on,int gn){
Enumeration e = list.elements();
while(e.hasMoreElements()){
PDFIndirectObject obj = (PDFIndirectObject)e.nextElement();
if((obj.getObjectNumber()==on)&&(obj.getGenerationNumber()==gn)){
return obj;
}
}
PDFIndirectObject obj = new PDFIndirectObject(on,gn,true);
list.add(obj);
return obj;
}
public void addNotInUse(int nextFreeEntry){
list.add(new PDFIndirectObject(list.size(),nextFreeEntry,false));
}
public void write(PDFFile out)throws IOException{
Enumeration e = list.elements();
while(e.hasMoreElements()){
((PDFObject)e.nextElement()).write(out);
}
}
public String toString(){
String s="";
Enumeration e = list.elements();
while(e.hasMoreElements()){
s+=((PDFObject)e.nextElement()).toString();
}
return s;
}
public void setXRefTable(PDFCrossReferenceTable xref){
Enumeration e = list.elements();
while(e.hasMoreElements()){
PDFIndirectObject entry = (PDFIndirectObject)e.nextElement();
xref.add(entry.getXRefEntry());
}
}
}