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    }