import java.io.*;
import java.util.*;

public class ObjectList {
	Vector vec = new Vector();
	public void add(File file) throws SyntaxException {
		String className;
		String parentName;
		Lex lex = new Lex(file);
		lex.gtkn();
		loop: while(lex.getTokenType() != Lex.EOF) {
			if(!lex.getToken().equals("struct")) {
				lex.gtkn();
				continue loop;
			}
			lex.gtkn();
			className = lex.getToken();
			if(!className.startsWith("_")) {
				lex.gtkn();
				continue loop;
			}
			if(lex.gtkn() == Lex.LEFTBRACE) {
				lex.gtkn();
				parentName = lex.getToken();
				lex.gtkn();
				if(lex.gtkn() == Lex.SEMICOLON) {
					className = className.substring(1,className.length());
					ObjectNode node = locateNode(className);
					ObjectNode parentNode = locateNode(parentName);
					node.setParent(parentNode);
				}
			}
		}
	}
	public ObjectNode locateNode(String name) {
		ObjectNode node;
		for(int i=0; i<vec.size(); i++) {
			node = (ObjectNode)vec.elementAt(i);
			int cond = node.getName().compareTo(name);
			if(cond == 0) {
				return(node);
			} else if(cond > 0) {
				node = new ObjectNode(name);
				vec.insertElementAt(node,i);
				return(node);
			}
		}
		node = new ObjectNode(name);
		vec.addElement(node);
		return(node);
	}
	public void dump(PrintWriter out) {
		for(int i=0; i<vec.size(); i++) {
			ObjectNode node = (ObjectNode)vec.elementAt(i);
			node.dump(out);
		}
	}
}
