package parser.ServletParser.library;

import java.io.*;
/** 이 클래스는 컨테이너 역할을 하는 리스트 클래스로서 인자들을
 * 관리하는 클래스이다.
 */
public final
	class ParameterList extends List {
	/** 버전 제어를 위한 시리얼 넘버이다.
	 */
	public static final long serialVersionUID = -7745011515348019472L;
	/** 생성자이다.
	 */
	public ParameterList() {
		super();
	}
	/** 인자들의 타입들만을 나열한 시그니쳐 스타일로 변환하는 함수이다.
	 */
	public String getTypesString() {
		String args = new String("");
		ParameterInfo info = getFirst();
		while (info != null) {
			args = args + info.getType();
			info = getNext();
			if (info != null) args = args + ",";
		}
		return args;
	}
	/** 인자들을 UML 스타일로 변환하는 함수이다.
	 */
	public String getUMLString() {
		String args = new String("");
		ParameterInfo info = getFirst();
		while (info != null) {
			args = args + info.getName() + ":" + info.getType();
			info = getNext();
			if (info != null) args = args + ",";
		}
		return args;
	}
	/** 인자들을 Java 스타일로 변환하는 함수이다.
	 */
	public String getJavaString() {
		String args = new String("");
		ParameterInfo info = getFirst();
		while (info != null) {
			args = args + info.getType() + " " + info.getName();
			info = getNext();
			if (info != null) args = args + ",";
		}
		return args;
	}
	/** 이 리스트의 마지막에 새로운 객체를 insert 하는 함수이다.
	 * 리스트에 이미 객체가 있으면 insert 하지 않는다.
	 */
	public void insert(ParameterInfo ptr) {
		_insert((Object)ptr,0);
	}
	/** 이 리스트로 부터 객체를 삭제하는 함수이다.
	 */
	public void remove(ParameterInfo ptr) {
		super._remove((Object)ptr,0);
	}
	/** 이 리스트를 비우는 함수이다.
	 */
	public void clear() {
		super._clear();
	}
	/** 리스트의 객체들을 traverse 할 때 맨 첫번째 객체를 찾아오는 함수이다.
	 * 만약 리스트가 비어있게되면 null 값을 리턴한다.
	 */
	public ParameterInfo getFirst() {
		return (ParameterInfo)super._getFirst();
	}
	/** 리스트의 객체들을 반대 방향으로 traverse 하기위해 맨 마지막 객체를 찾아오는 함수이다.
	 * 만약 리스트가 비어있게되면 null 값을 리턴한다.
	 */
	public ParameterInfo getLast() {
		return (ParameterInfo)super._getLast();
	}
	/** 리스트의 객체들을 traverse 할 때 다음 객체를 찾아오는 함수이다.
	 * 만약 리스트의 끝에 도달하면 null 값을 리턴한다.
	 */
	public ParameterInfo getNext() {
		return (ParameterInfo)super._getNext();
	}
	/** 리스트의 객체들을 반대 방향으로 traverse 할 때 다음 객체를 찾아오는 함수이다.
	 * 만약 리스트의 앞에 도달하면 null 값을 리턴한다.
	 */
	public ParameterInfo getPrevious() {
		return (ParameterInfo)super._getPrevious();
	}
}
