package parser.ServletParser.library;

/** 이 클래스는 클래스 멤버 파싱시에 참조되는 변수들의 리스트를 관리한다.
 */
public final
class VarRefBlock extends List 
{
	/** 버전 제어를 위한 시리얼 넘버이다.
	 */
	public static final long serialVersionUID = 4113183290594381611L;
	/** 생성자이다.
	 */
	public VarRefBlock() {
		super();
	}
	/** 이 리스트의 마지막에 새로운 객체를 insert 하는 함수이다.
	 */
	public void insert(VarRefItem ptr,int tag) {
		super._insert((Object)ptr,tag);
	}
	/** 이 리스트의 마지막에 새로운 객체를 insert 하는 함수이다.
	 * 리스트에 이미 객체가 있으면 insert 하지 않는다.
	 */
	public void insert(VarRefItem ptr) {
		insert(ptr,0);
	}
	/** 이 리스트를 비우는 함수이다.
	 */
	public void clear() {
		super._clear();
	}
	/** 리스트의 객체들을 traverse 할 때 맨 첫번째 객체를 찾아오는 함수이다.
	 * 만약 리스트가 비어있게되면 null 값을 리턴한다.
	 */
	public VarRefItem getFirst() {
		return (VarRefItem)super._getFirst();
	}
	/** 리스트의 객체들을 반대 방향으로 traverse 하기위해 맨 마지막 객체를 찾아오는 함수이다.
	 * 만약 리스트가 비어있게되면 null 값을 리턴한다.
	 */
	public VarRefItem getLast() {
		return (VarRefItem)super._getLast();
	}
	/** 리스트의 객체들을 traverse 할 때 다음 객체를 찾아오는 함수이다.
	 * 만약 리스트의 끝에 도달하면 null 값을 리턴한다.
	 */
	public VarRefItem getNext() {
		return (VarRefItem)super._getNext();
	}
	/** 리스트의 객체들을 반대 방향으로 traverse 할 때 다음 객체를 찾아오는 함수이다.
	 * 만약 리스트의 앞에 도달하면 null 값을 리턴한다.
	 */
	public VarRefItem getPrevious() {
		return (VarRefItem)super._getPrevious();
	}
	/** 어떠한 데이터가 데이터 멤버인가 확인하는 함수이다.
	 */
	public boolean isDataMember(String name) {
		VarRefItem item = getFirst();
		while (item != null) {
			if (name.compareTo(item.getName()) == 0) {
				return true;
			}
			item = getNext();
		}
		return false;
	}
}
