001    package railo.transformer.bytecode.util;
002    
003    import org.objectweb.asm.Type;
004    import org.objectweb.asm.commons.Method;
005    
006    public final class Methods_Caster {
007        
008        public static final int OBJECT=0;
009        public static final int BOOLEAN=1;
010        public static final int DOUBLE=2;
011        public static final int STRING=3;
012        
013        // railo.runtime.type.Array toArray (Object)
014        final public static Method TO_ARRAY = new Method("toArray",
015                            Types.ARRAY,
016                            new Type[]{Types.OBJECT});
017        // String toBase64 (Object)
018        final public static Method TO_BASE64 = new Method("toBase64",
019                            Types.STRING,
020                            new Type[]{Types.OBJECT}); 
021        // byte[] toBinary(Object)
022        final public static Method TO_BINARY = new Method("toBinary",
023                            Types.BYTE_VALUE_ARRAY,
024                            new Type[]{Types.OBJECT});
025        // railo.runtime.type.Collection toCollection (Object)
026        final public static Method TO_COLLECTION = new Method("toCollection",
027                            Types.COLLECTION,
028                            new Type[]{Types.OBJECT});
029            // railo.runtime.Component toComponent (Object)
030            final public static Method TO_COMPONENT = new Method("toComponent",
031                            Types.COMPONENT,
032                            new Type[]{Types.OBJECT});
033        //java.io.File toFile (Object)
034        final public static Method TO_FILE = new Method("toFile",
035                            Types.FILE,
036                            new Type[]{Types.OBJECT});
037        // org.w3c.dom.Node toNode (Object)
038        final public static Method TO_NODE = new Method("toNode",
039                            Types.NODE,
040                            new Type[]{Types.OBJECT});
041        // Object toNull (Object)
042        final public static Method TO_NULL = new Method("toNull",
043                            Types.OBJECT,
044                            new Type[]{Types.OBJECT});
045        // railo.runtime.type.Query toQuery (Object)
046        final public static Method TO_QUERY = new Method("toQuery",
047                            Types.QUERY,
048                            new Type[]{Types.OBJECT}); 
049        // railo.runtime.type.Struct toStruct (Object)
050        final public static Method TO_STRUCT = new Method("toStruct",
051                            Types.STRUCT,
052                            new Type[]{Types.OBJECT});
053        // railo.runtime.type.dt.TimeSpan toTimespan (Object)
054        final public static Method TO_TIMESPAN = new Method("toTimespan",
055                            Types.TIMESPAN,
056                            new Type[]{Types.OBJECT});
057        
058    
059        public static final Method TO_STRING_BUFFER=
060            new Method("toStringBuffer",Types.STRING_BUFFER,new Type[]{Types.OBJECT});
061        
062        //
063        public static final Method[] TO_DECIMAL=new Method[]{
064            new Method("toDecimal",Types.STRING,new Type[]{Types.OBJECT}),
065            new Method("toDecimal",Types.STRING,new Type[]{Types.BOOLEAN_VALUE}),
066            new Method("toDecimal",Types.STRING,new Type[]{Types.DOUBLE_VALUE}),
067            new Method("toDecimal",Types.STRING,new Type[]{Types.STRING})
068        };
069        
070        public static final Method[] TO_DATE=new Method[]{
071            new Method("toDate",Types.DATE_TIME,new Type[]{Types.OBJECT,Types.TIMEZONE}),
072            new Method("toDate",Types.DATE_TIME,new Type[]{Types.BOOLEAN_VALUE,Types.TIMEZONE}),
073            new Method("toDate",Types.DATE_TIME,new Type[]{Types.DOUBLE_VALUE,Types.TIMEZONE}),
074            new Method("toDate",Types.DATE_TIME,new Type[]{Types.STRING,Types.TIMEZONE})
075        };
076        
077        public static final Method[] TO_STRING=new Method[]{
078            new Method("toString",Types.STRING,new Type[]{Types.OBJECT}),
079            new Method("toString",Types.STRING,new Type[]{Types.BOOLEAN_VALUE}),
080            new Method("toString",Types.STRING,new Type[]{Types.DOUBLE_VALUE}),
081            new Method("toString",Types.STRING,new Type[]{Types.STRING})
082        };
083        
084        public static final Method[] TO_BOOLEAN=new Method[]{
085            new Method("toBoolean",Types.BOOLEAN,new Type[]{Types.OBJECT}),
086            new Method("toBoolean",Types.BOOLEAN,new Type[]{Types.BOOLEAN_VALUE}),
087            new Method("toBoolean",Types.BOOLEAN,new Type[]{Types.DOUBLE_VALUE}),
088            new Method("toBoolean",Types.BOOLEAN,new Type[]{Types.STRING})
089        };
090        
091        public static final Method[] TO_BOOLEAN_VALUE=new Method[]{
092            new Method("toBooleanValue",Types.BOOLEAN_VALUE,new Type[]{Types.OBJECT}),
093            new Method("toBooleanValue",Types.BOOLEAN_VALUE,new Type[]{Types.BOOLEAN_VALUE}),
094            new Method("toBooleanValue",Types.BOOLEAN_VALUE,new Type[]{Types.DOUBLE_VALUE}),
095            new Method("toBooleanValue",Types.BOOLEAN_VALUE,new Type[]{Types.STRING})
096        };
097        
098        public static final Method[] TO_BYTE=new Method[]{
099            new Method("toByte",Types.BYTE,new Type[]{Types.OBJECT}),
100            new Method("toByte",Types.BYTE,new Type[]{Types.BOOLEAN_VALUE}),
101            new Method("toByte",Types.BYTE,new Type[]{Types.DOUBLE_VALUE}),
102            new Method("toByte",Types.BYTE,new Type[]{Types.STRING})
103        };
104        
105        public static final Method[] TO_BYTE_VALUE=new Method[]{
106            new Method("toByteValue",Types.BYTE_VALUE,new Type[]{Types.OBJECT}),
107            new Method("toByteValue",Types.BYTE_VALUE,new Type[]{Types.BOOLEAN_VALUE}),
108            new Method("toByteValue",Types.BYTE_VALUE,new Type[]{Types.DOUBLE_VALUE}),
109            new Method("toByteValue",Types.BYTE_VALUE,new Type[]{Types.STRING})
110        };
111        
112        public static final Method[] TO_CHARACTER=new Method[]{
113            new Method("toCharacter",Types.CHARACTER,new Type[]{Types.OBJECT}),
114            new Method("toCharacter",Types.CHARACTER,new Type[]{Types.BOOLEAN_VALUE}),
115            new Method("toCharacter",Types.CHARACTER,new Type[]{Types.DOUBLE_VALUE}),
116            new Method("toCharacter",Types.CHARACTER,new Type[]{Types.STRING})
117        };
118        
119        public static final Method[] TO_CHAR_VALUE=new Method[]{
120            new Method("toCharValue",Types.CHAR,new Type[]{Types.OBJECT}),
121            new Method("toCharValue",Types.CHAR,new Type[]{Types.BOOLEAN_VALUE}),
122            new Method("toCharValue",Types.CHAR,new Type[]{Types.DOUBLE_VALUE}),
123            new Method("toCharValue",Types.CHAR,new Type[]{Types.STRING})
124        };
125        
126        public static final Method[] TO_SHORT=new Method[]{
127            new Method("toShort",Types.SHORT,new Type[]{Types.OBJECT}),
128            new Method("toShort",Types.SHORT,new Type[]{Types.BOOLEAN_VALUE}),
129            new Method("toShort",Types.SHORT,new Type[]{Types.DOUBLE_VALUE}),
130            new Method("toShort",Types.SHORT,new Type[]{Types.STRING})
131        };
132        
133        public static final Method[] TO_SHORT_VALUE=new Method[]{
134            new Method("toShortValue",Types.SHORT_VALUE,new Type[]{Types.OBJECT}),
135            new Method("toShortValue",Types.SHORT_VALUE,new Type[]{Types.BOOLEAN_VALUE}),
136            new Method("toShortValue",Types.SHORT_VALUE,new Type[]{Types.DOUBLE_VALUE}),
137            new Method("toShortValue",Types.SHORT_VALUE,new Type[]{Types.STRING})
138        };
139        
140        public static final Method[] TO_INTEGER=new Method[]{
141            new Method("toInteger",Types.INTEGER,new Type[]{Types.OBJECT}),
142            new Method("toInteger",Types.INTEGER,new Type[]{Types.BOOLEAN_VALUE}),
143            new Method("toInteger",Types.INTEGER,new Type[]{Types.DOUBLE_VALUE}),
144            new Method("toInteger",Types.INTEGER,new Type[]{Types.STRING})
145        };
146        
147        public static final Method[] TO_INT_VALUE=new Method[]{
148            new Method("toIntValue",Types.INT_VALUE,new Type[]{Types.OBJECT}),
149            new Method("toIntValue",Types.INT_VALUE,new Type[]{Types.BOOLEAN_VALUE}),
150            new Method("toIntValue",Types.INT_VALUE,new Type[]{Types.DOUBLE_VALUE}),
151            new Method("toIntValue",Types.INT_VALUE,new Type[]{Types.STRING})
152        };
153        
154        public static final Method[] TO_LONG=new Method[]{
155            new Method("toLong",Types.LONG,new Type[]{Types.OBJECT}),
156            new Method("toLong",Types.LONG,new Type[]{Types.BOOLEAN_VALUE}),
157            new Method("toLong",Types.LONG,new Type[]{Types.DOUBLE_VALUE}),
158            new Method("toLong",Types.LONG,new Type[]{Types.STRING})
159        };
160        
161        public static final Method[] TO_LONG_VALUE=new Method[]{
162            new Method("toLongValue",Types.LONG_VALUE,new Type[]{Types.OBJECT}),
163            new Method("toLongValue",Types.LONG_VALUE,new Type[]{Types.BOOLEAN_VALUE}),
164            new Method("toLongValue",Types.LONG_VALUE,new Type[]{Types.DOUBLE_VALUE}),
165            new Method("toLongValue",Types.LONG_VALUE,new Type[]{Types.STRING})
166        };
167        
168        public static final Method[] TO_FLOAT=new Method[]{
169            new Method("toFloat",Types.FLOAT,new Type[]{Types.OBJECT}),
170            new Method("toFloat",Types.FLOAT,new Type[]{Types.BOOLEAN_VALUE}),
171            new Method("toFloat",Types.FLOAT,new Type[]{Types.DOUBLE_VALUE}),
172            new Method("toFloat",Types.FLOAT,new Type[]{Types.STRING})
173        };
174        
175        public static final Method[] TO_FLOAT_VALUE=new Method[]{
176            new Method("toFloatValue",Types.FLOAT_VALUE,new Type[]{Types.OBJECT}),
177            new Method("toFloatValue",Types.FLOAT_VALUE,new Type[]{Types.BOOLEAN_VALUE}),
178            new Method("toFloatValue",Types.FLOAT_VALUE,new Type[]{Types.DOUBLE_VALUE}),
179            new Method("toFloatValue",Types.FLOAT_VALUE,new Type[]{Types.STRING})
180        };
181        
182        public static final Method[] TO_DOUBLE=new Method[]{
183            new Method("toDouble",Types.DOUBLE,new Type[]{Types.OBJECT}),
184            new Method("toDouble",Types.DOUBLE,new Type[]{Types.BOOLEAN_VALUE}),
185            new Method("toDouble",Types.DOUBLE,new Type[]{Types.DOUBLE_VALUE}),
186            new Method("toDouble",Types.DOUBLE,new Type[]{Types.STRING})
187        };
188        
189        public static final Method[] TO_DOUBLE_VALUE=new Method[]{
190            new Method("toDoubleValue",Types.DOUBLE_VALUE,new Type[]{Types.OBJECT}),
191            new Method("toDoubleValue",Types.DOUBLE_VALUE,new Type[]{Types.BOOLEAN_VALUE}),
192            new Method("toDoubleValue",Types.DOUBLE_VALUE,new Type[]{Types.DOUBLE_VALUE}),
193            new Method("toDoubleValue",Types.DOUBLE_VALUE,new Type[]{Types.STRING})
194        };
195    
196    }