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.Query toQueryColumn (Object)
050        final public static Method TO_QUERY_COLUMN = new Method("toQueryColumn",
051                            Types.QUERY_COLUMN,
052                            new Type[]{Types.OBJECT,Types.PAGE_CONTEXT}); 
053        // railo.runtime.type.Struct toStruct (Object)
054        final public static Method TO_STRUCT = new Method("toStruct",
055                            Types.STRUCT,
056                            new Type[]{Types.OBJECT});
057        // railo.runtime.type.dt.TimeSpan toTimespan (Object)
058        final public static Method TO_TIMESPAN = new Method("toTimespan",
059                            Types.TIMESPAN,
060                            new Type[]{Types.OBJECT});
061        
062    
063        public static final Method TO_STRING_BUFFER=
064            new Method("toStringBuffer",Types.STRING_BUFFER,new Type[]{Types.OBJECT});
065        
066        //
067        public static final Method[] TO_DECIMAL=new Method[]{
068            new Method("toDecimal",Types.STRING,new Type[]{Types.OBJECT}),
069            new Method("toDecimal",Types.STRING,new Type[]{Types.BOOLEAN_VALUE}),
070            new Method("toDecimal",Types.STRING,new Type[]{Types.DOUBLE_VALUE}),
071            new Method("toDecimal",Types.STRING,new Type[]{Types.STRING})
072        };
073        
074        public static final Method[] TO_DATE=new Method[]{
075            new Method("toDate",Types.DATE_TIME,new Type[]{Types.OBJECT,Types.TIMEZONE}),
076            new Method("toDate",Types.DATE_TIME,new Type[]{Types.BOOLEAN_VALUE,Types.TIMEZONE}),
077            new Method("toDate",Types.DATE_TIME,new Type[]{Types.DOUBLE_VALUE,Types.TIMEZONE}),
078            new Method("toDate",Types.DATE_TIME,new Type[]{Types.STRING,Types.TIMEZONE})
079        };
080        
081        public static final Method[] TO_STRING=new Method[]{
082            new Method("toString",Types.STRING,new Type[]{Types.OBJECT}),
083            new Method("toString",Types.STRING,new Type[]{Types.BOOLEAN_VALUE}),
084            new Method("toString",Types.STRING,new Type[]{Types.DOUBLE_VALUE}),
085            new Method("toString",Types.STRING,new Type[]{Types.STRING})
086        };
087        
088        public static final Method[] TO_BOOLEAN=new Method[]{
089            new Method("toBoolean",Types.BOOLEAN,new Type[]{Types.OBJECT}),
090            new Method("toBoolean",Types.BOOLEAN,new Type[]{Types.BOOLEAN_VALUE}),
091            new Method("toBoolean",Types.BOOLEAN,new Type[]{Types.DOUBLE_VALUE}),
092            new Method("toBoolean",Types.BOOLEAN,new Type[]{Types.STRING})
093        };
094        
095        public static final Method[] TO_BOOLEAN_VALUE=new Method[]{
096            new Method("toBooleanValue",Types.BOOLEAN_VALUE,new Type[]{Types.OBJECT}),
097            new Method("toBooleanValue",Types.BOOLEAN_VALUE,new Type[]{Types.BOOLEAN_VALUE}),
098            new Method("toBooleanValue",Types.BOOLEAN_VALUE,new Type[]{Types.DOUBLE_VALUE}),
099            new Method("toBooleanValue",Types.BOOLEAN_VALUE,new Type[]{Types.STRING})
100        };
101        
102        public static final Method[] TO_BYTE=new Method[]{
103            new Method("toByte",Types.BYTE,new Type[]{Types.OBJECT}),
104            new Method("toByte",Types.BYTE,new Type[]{Types.BOOLEAN_VALUE}),
105            new Method("toByte",Types.BYTE,new Type[]{Types.DOUBLE_VALUE}),
106            new Method("toByte",Types.BYTE,new Type[]{Types.STRING})
107        };
108        
109        public static final Method[] TO_BYTE_VALUE=new Method[]{
110            new Method("toByteValue",Types.BYTE_VALUE,new Type[]{Types.OBJECT}),
111            new Method("toByteValue",Types.BYTE_VALUE,new Type[]{Types.BOOLEAN_VALUE}),
112            new Method("toByteValue",Types.BYTE_VALUE,new Type[]{Types.DOUBLE_VALUE}),
113            new Method("toByteValue",Types.BYTE_VALUE,new Type[]{Types.STRING})
114        };
115        
116        public static final Method[] TO_CHARACTER=new Method[]{
117            new Method("toCharacter",Types.CHARACTER,new Type[]{Types.OBJECT}),
118            new Method("toCharacter",Types.CHARACTER,new Type[]{Types.BOOLEAN_VALUE}),
119            new Method("toCharacter",Types.CHARACTER,new Type[]{Types.DOUBLE_VALUE}),
120            new Method("toCharacter",Types.CHARACTER,new Type[]{Types.STRING})
121        };
122        
123        public static final Method[] TO_CHAR_VALUE=new Method[]{
124            new Method("toCharValue",Types.CHAR,new Type[]{Types.OBJECT}),
125            new Method("toCharValue",Types.CHAR,new Type[]{Types.BOOLEAN_VALUE}),
126            new Method("toCharValue",Types.CHAR,new Type[]{Types.DOUBLE_VALUE}),
127            new Method("toCharValue",Types.CHAR,new Type[]{Types.STRING})
128        };
129        
130        public static final Method[] TO_SHORT=new Method[]{
131            new Method("toShort",Types.SHORT,new Type[]{Types.OBJECT}),
132            new Method("toShort",Types.SHORT,new Type[]{Types.BOOLEAN_VALUE}),
133            new Method("toShort",Types.SHORT,new Type[]{Types.DOUBLE_VALUE}),
134            new Method("toShort",Types.SHORT,new Type[]{Types.STRING})
135        };
136        
137        public static final Method[] TO_SHORT_VALUE=new Method[]{
138            new Method("toShortValue",Types.SHORT_VALUE,new Type[]{Types.OBJECT}),
139            new Method("toShortValue",Types.SHORT_VALUE,new Type[]{Types.BOOLEAN_VALUE}),
140            new Method("toShortValue",Types.SHORT_VALUE,new Type[]{Types.DOUBLE_VALUE}),
141            new Method("toShortValue",Types.SHORT_VALUE,new Type[]{Types.STRING})
142        };
143        
144        public static final Method[] TO_INTEGER=new Method[]{
145            new Method("toInteger",Types.INTEGER,new Type[]{Types.OBJECT}),
146            new Method("toInteger",Types.INTEGER,new Type[]{Types.BOOLEAN_VALUE}),
147            new Method("toInteger",Types.INTEGER,new Type[]{Types.DOUBLE_VALUE}),
148            new Method("toInteger",Types.INTEGER,new Type[]{Types.STRING})
149        };
150        
151        public static final Method[] TO_INT_VALUE=new Method[]{
152            new Method("toIntValue",Types.INT_VALUE,new Type[]{Types.OBJECT}),
153            new Method("toIntValue",Types.INT_VALUE,new Type[]{Types.BOOLEAN_VALUE}),
154            new Method("toIntValue",Types.INT_VALUE,new Type[]{Types.DOUBLE_VALUE}),
155            new Method("toIntValue",Types.INT_VALUE,new Type[]{Types.STRING})
156        };
157        
158        public static final Method[] TO_LONG=new Method[]{
159            new Method("toLong",Types.LONG,new Type[]{Types.OBJECT}),
160            new Method("toLong",Types.LONG,new Type[]{Types.BOOLEAN_VALUE}),
161            new Method("toLong",Types.LONG,new Type[]{Types.DOUBLE_VALUE}),
162            new Method("toLong",Types.LONG,new Type[]{Types.STRING})
163        };
164        
165        public static final Method[] TO_LONG_VALUE=new Method[]{
166            new Method("toLongValue",Types.LONG_VALUE,new Type[]{Types.OBJECT}),
167            new Method("toLongValue",Types.LONG_VALUE,new Type[]{Types.BOOLEAN_VALUE}),
168            new Method("toLongValue",Types.LONG_VALUE,new Type[]{Types.DOUBLE_VALUE}),
169            new Method("toLongValue",Types.LONG_VALUE,new Type[]{Types.STRING})
170        };
171        
172        public static final Method[] TO_FLOAT=new Method[]{
173            new Method("toFloat",Types.FLOAT,new Type[]{Types.OBJECT}),
174            new Method("toFloat",Types.FLOAT,new Type[]{Types.BOOLEAN_VALUE}),
175            new Method("toFloat",Types.FLOAT,new Type[]{Types.DOUBLE_VALUE}),
176            new Method("toFloat",Types.FLOAT,new Type[]{Types.STRING})
177        };
178        
179        public static final Method[] TO_FLOAT_VALUE=new Method[]{
180            new Method("toFloatValue",Types.FLOAT_VALUE,new Type[]{Types.OBJECT}),
181            new Method("toFloatValue",Types.FLOAT_VALUE,new Type[]{Types.BOOLEAN_VALUE}),
182            new Method("toFloatValue",Types.FLOAT_VALUE,new Type[]{Types.DOUBLE_VALUE}),
183            new Method("toFloatValue",Types.FLOAT_VALUE,new Type[]{Types.STRING})
184        };
185        
186        public static final Method[] TO_DOUBLE=new Method[]{
187            new Method("toDouble",Types.DOUBLE,new Type[]{Types.OBJECT}),
188            new Method("toDouble",Types.DOUBLE,new Type[]{Types.BOOLEAN_VALUE}),
189            new Method("toDouble",Types.DOUBLE,new Type[]{Types.DOUBLE_VALUE}),
190            new Method("toDouble",Types.DOUBLE,new Type[]{Types.STRING})
191        };
192        
193        public static final Method[] TO_DOUBLE_VALUE=new Method[]{
194            new Method("toDoubleValue",Types.DOUBLE_VALUE,new Type[]{Types.OBJECT}),
195            new Method("toDoubleValue",Types.DOUBLE_VALUE,new Type[]{Types.BOOLEAN_VALUE}),
196            new Method("toDoubleValue",Types.DOUBLE_VALUE,new Type[]{Types.DOUBLE_VALUE}),
197            new Method("toDoubleValue",Types.DOUBLE_VALUE,new Type[]{Types.STRING})
198        };
199    
200    }