package parser.ServletParser.library;

import java.io.*;
/** 이 클래스는 파싱시에 참조되는 변수에 대한 정보를 관리한다.
 */
public final
class VarRefItem extends Object implements Serializable
{
	/** 버전 제어를 위한 시리얼 넘버이다.
	 */
	public static final long serialVersionUID = 8049053544973631149L;
	/** 데이터 멤버의 이름이며 키로 사용될 수 있다.
	 */
    private String _name;
	/** 데이터 멤버의 타입이다.
	 */
    private String _type;
	/** 스트링인 경우의 값(evaluation 용,r-value)
	 */
	private String _strValue;
	/** 데이터 멤버인 경우 원래 데이터 위치
	 */
	private AttributeInfoNode _varPtr;
	/** 생성자이다.
	 */
    public VarRefItem(String name,String type) {
		_name = new String(name);
		_type = type;
		if (type == null) _type = new String("Object");
		_varPtr = null;
		_strValue = "";
    }
	/** 어트리뷰트의 스트링 값을 카피하는 함수이다.
	 */
	public void setStrValueFromAttribute() {
		if (_varPtr == null) return;
		_strValue = _varPtr.getStrValue();
	}
	/** 데이터 멤버 _name에 대한 read access 함수이다.
	 */
	public String getName() {
		return _name;
	}
	/** 데이터 멤버 _type에 대한 read access 함수이다.
	 */
	public String getType() {
		return _type;
	}
	/** 데이터 멤버 _varPtr에 대한 write access 함수이다.
	 */
	public void setVarPtr(AttributeInfoNode ptr) {
		_varPtr = ptr;
	}
	/** 데이터 멤버 _varPtr에 대한 read access 함수이다.
	 */
	public AttributeInfoNode getVarPtr() {
		return _varPtr;
	}
	/** 데이터 멤버 _strValue에 대한 write access 함수이다.
	 */
	public void setStrValue(String val) {
		_strValue = new String(val);
		if (_varPtr != null) {
			_varPtr.setStrValue(val);
		}
	}
	/** 데이터 멤버 _strValue에 대한 read access 함수이다.
	 */
	public String getStrValue() {
		return _strValue;
	}
}
