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