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 }