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 }