package org.eclipse;

public class LoopTag implements javax.servlet.jsp.tagext.IterationTag {

	public int doAfterBody() throws javax.servlet.jsp.JspException {
		return 0;
	}

	public int doEndTag() throws javax.servlet.jsp.JspException {
		return 0;
	}

	public int doStartTag() throws javax.servlet.jsp.JspException {
		return 0;
	}

	public javax.servlet.jsp.tagext.Tag getParent() {
		return null;
	}

	public void release() {
	}

	public void setPageContext(javax.servlet.jsp.PageContext pc) {
	}

	public void setParent(javax.servlet.jsp.tagext.Tag t) {
	}

}
