001 package sysModel.classFile.constantPool.visitors;
002
003 import sysModel.classFile.constantPool.APoolInfo;
004 import sysModel.classFile.constantPool.ClassPoolInfo;
005
006 /**
007 * Check that the host is a class info.
008 *
009 * @author Mathias Ricken
010 */
011 public class CheckClassVisitor extends ADefaultPoolInfoVisitor<ClassPoolInfo, Object> {
012 /**
013 * Singleton constructor.
014 */
015 private CheckClassVisitor() {
016 }
017
018 /**
019 * Singleton instance.
020 */
021 private static CheckClassVisitor _instance = new CheckClassVisitor();
022
023 /**
024 * Singleton accessor.
025 *
026 * @return singleton
027 */
028 public static CheckClassVisitor singleton() {
029 return _instance;
030 }
031
032 /**
033 * All other cases throw.
034 *
035 * @param host non-class host
036 * @param o not used
037 *
038 * @return nothing
039 */
040 public ClassPoolInfo defaultCase(APoolInfo host, Object o) {
041 throw new ClassFormatError("Info is of type " + host.getClass().getName() + ", needs to be ClassPoolInfo");
042 }
043
044 /**
045 * Return host.
046 *
047 * @param host class host
048 * @param o not used
049 *
050 * @return host
051 */
052 public ClassPoolInfo classCase(ClassPoolInfo host, Object o) {
053 return host;
054 }
055 }