001 package sysModel.classFile.constantPool.visitors;
002
003 import sysModel.classFile.constantPool.*;
004
005 /**
006 * Abstract visitor in which all value cases call a default value method, and all reference cases call a default
007 * reference method.
008 *
009 * @author Mathias Ricken
010 */
011 public abstract class AValueReferencePoolInfoVisitor <R, D> implements IPoolInfoVisitor<R, D> {
012 /**
013 * Abstract default reference case.
014 *
015 * @param host referece constant pool info item
016 * @param param visitor-specific parameter
017 *
018 * @return visitor-specific return value
019 */
020 public abstract R refCase(APoolInfo host, D param);
021
022 /**
023 * Abstract default value case.
024 *
025 * @param host value constant pool info item
026 * @param param visitor-specific parameter
027 *
028 * @return visitor-specific return value
029 */
030 public abstract R valueCase(APoolInfo host, D param);
031
032 /**
033 * Case for class info.
034 *
035 * @param host class info
036 * @param param visitor-specific parameter
037 *
038 * @return visitor-specific return value
039 */
040 public R classCase(ClassPoolInfo host, D param) {
041 return refCase(host, param);
042 }
043
044 /**
045 * Case for string info.
046 *
047 * @param host string info
048 * @param param visitor-specific parameter
049 *
050 * @return visitor-specific return value
051 */
052 public R stringCase(StringPoolInfo host, D param) {
053 return refCase(host, param);
054 }
055
056 /**
057 * Case for field info.
058 *
059 * @param host field info
060 * @param param visitor-specific parameter
061 *
062 * @return visitor-specific return value
063 */
064 public R fieldCase(FieldPoolInfo host, D param) {
065 return refCase(host, param);
066 }
067
068 /**
069 * Case for method info.
070 *
071 * @param host method info
072 * @param param visitor-specific parameter
073 *
074 * @return visitor-specific return value
075 */
076 public R methodCase(MethodPoolInfo host, D param) {
077 return refCase(host, param);
078 }
079
080 /**
081 * Case for interface method info.
082 *
083 * @param host interface method info info
084 * @param param visitor-specific parameter
085 *
086 * @return visitor-specific return value
087 */
088 public R interfaceMethodCase(InterfaceMethodPoolInfo host, D param) {
089 return refCase(host, param);
090 }
091
092 /**
093 * Case for name and type info.
094 *
095 * @param host name and type info
096 * @param param visitor-specific parameter
097 *
098 * @return visitor-specific return value
099 */
100 public R nameAndTypeCase(NameAndTypePoolInfo host, D param) {
101 return refCase(host, param);
102 }
103
104 /**
105 * Case for int info.
106 *
107 * @param host int info
108 * @param param visitor-specific parameter
109 *
110 * @return visitor-specific return value
111 */
112 public R intCase(IntegerPoolInfo host, D param) {
113 return valueCase(host, param);
114 }
115
116 /**
117 * Case for float info.
118 *
119 * @param host float info
120 * @param param visitor-specific parameter
121 *
122 * @return visitor-specific return value
123 */
124 public R floatCase(FloatPoolInfo host, D param) {
125 return valueCase(host, param);
126 }
127
128 /**
129 * Case for long info.
130 *
131 * @param host long info
132 * @param param visitor-specific parameter
133 *
134 * @return visitor-specific return value
135 */
136 public R longCase(LongPoolInfo host, D param) {
137 return valueCase(host, param);
138 }
139
140 /**
141 * Case for double info.
142 *
143 * @param host double info
144 * @param param visitor-specific parameter
145 *
146 * @return visitor-specific return value
147 */
148 public R doubleCase(DoublePoolInfo host, D param) {
149 return valueCase(host, param);
150 }
151
152 /**
153 * Case for asciiz info.
154 *
155 * @param host asciiz info
156 * @param param visitor-specific parameter
157 *
158 * @return visitor-specific return value
159 */
160 public R asciizCase(ASCIIPoolInfo host, D param) {
161 return valueCase(host, param);
162 }
163
164 /**
165 * Case for unicode info.
166 *
167 * @param host unicode info
168 * @param param visitor-specific parameter
169 *
170 * @return visitor-specific return value
171 */
172 public R unicodeCase(UnicodePoolInfo host, D param) {
173 return valueCase(host, param);
174 }
175 }