package ash.reverse.struct;
import java.io.PrintStream;
import ash.reverse.parser.Visibility;

/**
 * メソッドの規模情報とメソッド本体での参照名を管理する。<br>
 * ★CompositeパターンのLeafの役割を果たす。
 */
public class MethodRecord extends ObjectRecord {
	MethodRecord(String name, int lineno, GroupRecord owner) {
		super("method", name, lineno, owner);
	}
	@Override protected int countMethods() { return 1; }
	@Override protected int sumMethodLoc() { return loc; }

	/**
	 * Visitorパターンの受け入れ側メソッド。訪問者を受け入れる。
	 * @param visitor このメソッド記録を閲覧したい訪問者
	 */
	@Override public void accept(ObjectVisitor visitor) {
		visitor.visit(this);
	}

	@Override public void visibility(Visibility vis) {
		if(owner.isInterface() && vis == Visibility.PACKAGE) {
			visibility = Visibility.PUBLIC;
		} else {
			visibility = vis;
		}
	}

}
