001 package sysModel.classFile.constantPool.visitors;
002
003 import sysModel.classFile.constantPool.*;
004
005 /**
006 * Visitor on constant pool info objects. First generic type parameter is return type, second is parameter type.
007 *
008 * @author Mathias Ricken
009 */
010 public interface IPoolInfoVisitor <R, D> {
011 /**
012 * Case for empty info.
013 *
014 * @param host empty info
015 * @param param visitor-specific parameter
016 *
017 * @return visitor-specific return value
018 */
019 R emptyCase(EmptyPoolInfo host, D param);
020
021 /**
022 * Case for class info.
023 *
024 * @param host class info
025 * @param param visitor-specific parameter
026 *
027 * @return visitor-specific return value
028 */
029 R classCase(ClassPoolInfo host, D param);
030
031 /**
032 * Case for string info.
033 *
034 * @param host string info
035 * @param param visitor-specific parameter
036 *
037 * @return visitor-specific return value
038 */
039 R stringCase(StringPoolInfo host, D param);
040
041 /**
042 * Case for field info.
043 *
044 * @param host field info
045 * @param param visitor-specific parameter
046 *
047 * @return visitor-specific return value
048 */
049 R fieldCase(FieldPoolInfo host, D param);
050
051 /**
052 * Case for method info.
053 *
054 * @param host method info
055 * @param param visitor-specific parameter
056 *
057 * @return visitor-specific return value
058 */
059 R methodCase(MethodPoolInfo host, D param);
060
061 /**
062 * Case for interface method info.
063 *
064 * @param host interface method info info
065 * @param param visitor-specific parameter
066 *
067 * @return visitor-specific return value
068 */
069 R interfaceMethodCase(InterfaceMethodPoolInfo host, D param);
070
071 /**
072 * Case for name and type info.
073 *
074 * @param host name and type info
075 * @param param visitor-specific parameter
076 *
077 * @return visitor-specific return value
078 */
079 R nameAndTypeCase(NameAndTypePoolInfo host, D param);
080
081 /**
082 * Case for int info.
083 *
084 * @param host int info
085 * @param param visitor-specific parameter
086 *
087 * @return visitor-specific return value
088 */
089 R intCase(IntegerPoolInfo host, D param);
090
091 /**
092 * Case for float info.
093 *
094 * @param host float info
095 * @param param visitor-specific parameter
096 *
097 * @return visitor-specific return value
098 */
099 R floatCase(FloatPoolInfo host, D param);
100
101 /**
102 * Case for long info.
103 *
104 * @param host long info
105 * @param param visitor-specific parameter
106 *
107 * @return visitor-specific return value
108 */
109 R longCase(LongPoolInfo host, D param);
110
111 /**
112 * Case for double info.
113 *
114 * @param host double info
115 * @param param visitor-specific parameter
116 *
117 * @return visitor-specific return value
118 */
119 R doubleCase(DoublePoolInfo host, D param);
120
121 /**
122 * Case for asciiz info.
123 *
124 * @param host asciiz info
125 * @param param visitor-specific parameter
126 *
127 * @return visitor-specific return value
128 */
129 R asciizCase(ASCIIPoolInfo host, D param);
130
131 /**
132 * Case for unicode info.
133 *
134 * @param host unicode info
135 * @param param visitor-specific parameter
136 *
137 * @return visitor-specific return value
138 */
139 R unicodeCase(UnicodePoolInfo host, D param);
140 }