001/** 002 * 003 * Copyright (c) 2014, the Railo Company Ltd. All rights reserved. 004 * 005 * This library is free software; you can redistribute it and/or 006 * modify it under the terms of the GNU Lesser General Public 007 * License as published by the Free Software Foundation; either 008 * version 2.1 of the License, or (at your option) any later version. 009 * 010 * This library is distributed in the hope that it will be useful, 011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 013 * Lesser General Public License for more details. 014 * 015 * You should have received a copy of the GNU Lesser General Public 016 * License along with this library. If not, see <http://www.gnu.org/licenses/>. 017 * 018 **/ 019package lucee.transformer.bytecode.util; 020 021import org.objectweb.asm.Type; 022import org.objectweb.asm.commons.Method; 023 024public final class Methods_Caster { 025 026 public static final int OBJECT=0; 027 public static final int BOOLEAN=1; 028 public static final int DOUBLE=2; 029 public static final int STRING=3; 030 031 // lucee.runtime.type.Array toArray (Object) 032 final public static Method TO_ARRAY = new Method("toArray", 033 Types.ARRAY, 034 new Type[]{Types.OBJECT}); 035 036 final public static Method TO_IMAGE = new Method("toImage", 037 Types.IMAGE, 038 new Type[]{Types.OBJECT,Types.PAGE_CONTEXT}); 039 040 // String toBase64 (Object) 041 final public static Method TO_BASE64 = new Method("toBase64", 042 Types.STRING, 043 new Type[]{Types.OBJECT}); 044 // byte[] toBinary(Object) 045 final public static Method TO_BINARY = new Method("toBinary", 046 Types.BYTE_VALUE_ARRAY, 047 new Type[]{Types.OBJECT}); 048 // lucee.runtime.type.Collection toCollection (Object) 049 final public static Method TO_COLLECTION = new Method("toCollection", 050 Types.COLLECTION, 051 new Type[]{Types.OBJECT}); 052 // lucee.runtime.Component toComponent (Object) 053 final public static Method TO_COMPONENT = new Method("toComponent", 054 Types.COMPONENT, 055 new Type[]{Types.OBJECT}); 056 //java.io.File toFile (Object) 057 final public static Method TO_FILE = new Method("toFile", 058 Types.FILE, 059 new Type[]{Types.OBJECT}); 060 // org.w3c.dom.Node toNode (Object) 061 final public static Method TO_NODE = new Method("toNode", 062 Types.NODE, 063 new Type[]{Types.OBJECT}); 064 // Object toNull (Object) 065 final public static Method TO_NULL = new Method("toNull", 066 Types.OBJECT, 067 new Type[]{Types.OBJECT}); 068 // lucee.runtime.type.Query toQuery (Object) 069 final public static Method TO_QUERY = new Method("toQuery", 070 Types.QUERY, 071 new Type[]{Types.OBJECT}); 072 // lucee.runtime.type.Query toQueryColumn (Object) 073 final public static Method TO_QUERY_COLUMN = new Method("toQueryColumn", 074 Types.QUERY_COLUMN, 075 new Type[]{Types.OBJECT,Types.PAGE_CONTEXT}); 076 // lucee.runtime.type.Struct toStruct (Object) 077 final public static Method TO_STRUCT = new Method("toStruct", 078 Types.STRUCT, 079 new Type[]{Types.OBJECT}); 080 // lucee.runtime.type.dt.TimeSpan toTimespan (Object) 081 final public static Method TO_TIMESPAN = new Method("toTimespan", 082 Types.TIMESPAN, 083 new Type[]{Types.OBJECT}); 084 085 086 public static final Method TO_STRING_BUFFER= 087 new Method("toStringBuffer",Types.STRING_BUFFER,new Type[]{Types.OBJECT}); 088 089 // 090 public static final Method[] TO_DECIMAL=new Method[]{ 091 new Method("toDecimal",Types.STRING,new Type[]{Types.OBJECT}), 092 new Method("toDecimal",Types.STRING,new Type[]{Types.BOOLEAN_VALUE}), 093 new Method("toDecimal",Types.STRING,new Type[]{Types.DOUBLE_VALUE}), 094 new Method("toDecimal",Types.STRING,new Type[]{Types.STRING}) 095 }; 096 097 public static final Method[] TO_DATE=new Method[]{ 098 new Method("toDate",Types.DATE_TIME,new Type[]{Types.OBJECT,Types.TIMEZONE}), 099 new Method("toDate",Types.DATE_TIME,new Type[]{Types.BOOLEAN_VALUE,Types.TIMEZONE}), 100 new Method("toDate",Types.DATE_TIME,new Type[]{Types.DOUBLE_VALUE,Types.TIMEZONE}), 101 new Method("toDate",Types.DATE_TIME,new Type[]{Types.STRING,Types.TIMEZONE}) 102 }; 103 104 public static final Method[] TO_STRING=new Method[]{ 105 new Method("toString",Types.STRING,new Type[]{Types.OBJECT}), 106 new Method("toString",Types.STRING,new Type[]{Types.BOOLEAN_VALUE}), 107 new Method("toString",Types.STRING,new Type[]{Types.DOUBLE_VALUE}), 108 new Method("toString",Types.STRING,new Type[]{Types.STRING}) 109 }; 110 111 public static final Method[] TO_BOOLEAN=new Method[]{ 112 new Method("toBoolean",Types.BOOLEAN,new Type[]{Types.OBJECT}), 113 new Method("toBoolean",Types.BOOLEAN,new Type[]{Types.BOOLEAN_VALUE}), 114 new Method("toBoolean",Types.BOOLEAN,new Type[]{Types.DOUBLE_VALUE}), 115 new Method("toBoolean",Types.BOOLEAN,new Type[]{Types.STRING}) 116 }; 117 118 public static final Method[] TO_BOOLEAN_VALUE=new Method[]{ 119 new Method("toBooleanValue",Types.BOOLEAN_VALUE,new Type[]{Types.OBJECT}), 120 new Method("toBooleanValue",Types.BOOLEAN_VALUE,new Type[]{Types.BOOLEAN_VALUE}), 121 new Method("toBooleanValue",Types.BOOLEAN_VALUE,new Type[]{Types.DOUBLE_VALUE}), 122 new Method("toBooleanValue",Types.BOOLEAN_VALUE,new Type[]{Types.STRING}) 123 }; 124 125 public static final Method[] TO_BYTE=new Method[]{ 126 new Method("toByte",Types.BYTE,new Type[]{Types.OBJECT}), 127 new Method("toByte",Types.BYTE,new Type[]{Types.BOOLEAN_VALUE}), 128 new Method("toByte",Types.BYTE,new Type[]{Types.DOUBLE_VALUE}), 129 new Method("toByte",Types.BYTE,new Type[]{Types.STRING}) 130 }; 131 132 public static final Method[] TO_BYTE_VALUE=new Method[]{ 133 new Method("toByteValue",Types.BYTE_VALUE,new Type[]{Types.OBJECT}), 134 new Method("toByteValue",Types.BYTE_VALUE,new Type[]{Types.BOOLEAN_VALUE}), 135 new Method("toByteValue",Types.BYTE_VALUE,new Type[]{Types.DOUBLE_VALUE}), 136 new Method("toByteValue",Types.BYTE_VALUE,new Type[]{Types.STRING}) 137 }; 138 139 public static final Method[] TO_CHARACTER=new Method[]{ 140 new Method("toCharacter",Types.CHARACTER,new Type[]{Types.OBJECT}), 141 new Method("toCharacter",Types.CHARACTER,new Type[]{Types.BOOLEAN_VALUE}), 142 new Method("toCharacter",Types.CHARACTER,new Type[]{Types.DOUBLE_VALUE}), 143 new Method("toCharacter",Types.CHARACTER,new Type[]{Types.STRING}) 144 }; 145 146 public static final Method[] TO_CHAR_VALUE=new Method[]{ 147 new Method("toCharValue",Types.CHAR,new Type[]{Types.OBJECT}), 148 new Method("toCharValue",Types.CHAR,new Type[]{Types.BOOLEAN_VALUE}), 149 new Method("toCharValue",Types.CHAR,new Type[]{Types.DOUBLE_VALUE}), 150 new Method("toCharValue",Types.CHAR,new Type[]{Types.STRING}) 151 }; 152 153 public static final Method[] TO_SHORT=new Method[]{ 154 new Method("toShort",Types.SHORT,new Type[]{Types.OBJECT}), 155 new Method("toShort",Types.SHORT,new Type[]{Types.BOOLEAN_VALUE}), 156 new Method("toShort",Types.SHORT,new Type[]{Types.DOUBLE_VALUE}), 157 new Method("toShort",Types.SHORT,new Type[]{Types.STRING}) 158 }; 159 160 public static final Method[] TO_SHORT_VALUE=new Method[]{ 161 new Method("toShortValue",Types.SHORT_VALUE,new Type[]{Types.OBJECT}), 162 new Method("toShortValue",Types.SHORT_VALUE,new Type[]{Types.BOOLEAN_VALUE}), 163 new Method("toShortValue",Types.SHORT_VALUE,new Type[]{Types.DOUBLE_VALUE}), 164 new Method("toShortValue",Types.SHORT_VALUE,new Type[]{Types.STRING}) 165 }; 166 167 public static final Method[] TO_INTEGER=new Method[]{ 168 new Method("toInteger",Types.INTEGER,new Type[]{Types.OBJECT}), 169 new Method("toInteger",Types.INTEGER,new Type[]{Types.BOOLEAN_VALUE}), 170 new Method("toInteger",Types.INTEGER,new Type[]{Types.DOUBLE_VALUE}), 171 new Method("toInteger",Types.INTEGER,new Type[]{Types.STRING}) 172 }; 173 174 public static final Method[] TO_INT_VALUE=new Method[]{ 175 new Method("toIntValue",Types.INT_VALUE,new Type[]{Types.OBJECT}), 176 new Method("toIntValue",Types.INT_VALUE,new Type[]{Types.BOOLEAN_VALUE}), 177 new Method("toIntValue",Types.INT_VALUE,new Type[]{Types.DOUBLE_VALUE}), 178 new Method("toIntValue",Types.INT_VALUE,new Type[]{Types.STRING}) 179 }; 180 181 public static final Method[] TO_LONG=new Method[]{ 182 new Method("toLong",Types.LONG,new Type[]{Types.OBJECT}), 183 new Method("toLong",Types.LONG,new Type[]{Types.BOOLEAN_VALUE}), 184 new Method("toLong",Types.LONG,new Type[]{Types.DOUBLE_VALUE}), 185 new Method("toLong",Types.LONG,new Type[]{Types.STRING}) 186 }; 187 188 public static final Method[] TO_LONG_VALUE=new Method[]{ 189 new Method("toLongValue",Types.LONG_VALUE,new Type[]{Types.OBJECT}), 190 new Method("toLongValue",Types.LONG_VALUE,new Type[]{Types.BOOLEAN_VALUE}), 191 new Method("toLongValue",Types.LONG_VALUE,new Type[]{Types.DOUBLE_VALUE}), 192 new Method("toLongValue",Types.LONG_VALUE,new Type[]{Types.STRING}) 193 }; 194 195 public static final Method[] TO_FLOAT=new Method[]{ 196 new Method("toFloat",Types.FLOAT,new Type[]{Types.OBJECT}), 197 new Method("toFloat",Types.FLOAT,new Type[]{Types.BOOLEAN_VALUE}), 198 new Method("toFloat",Types.FLOAT,new Type[]{Types.DOUBLE_VALUE}), 199 new Method("toFloat",Types.FLOAT,new Type[]{Types.STRING}) 200 }; 201 202 public static final Method[] TO_FLOAT_VALUE=new Method[]{ 203 new Method("toFloatValue",Types.FLOAT_VALUE,new Type[]{Types.OBJECT}), 204 new Method("toFloatValue",Types.FLOAT_VALUE,new Type[]{Types.BOOLEAN_VALUE}), 205 new Method("toFloatValue",Types.FLOAT_VALUE,new Type[]{Types.DOUBLE_VALUE}), 206 new Method("toFloatValue",Types.FLOAT_VALUE,new Type[]{Types.STRING}) 207 }; 208 209 public static final Method[] TO_DOUBLE=new Method[]{ 210 new Method("toDouble",Types.DOUBLE,new Type[]{Types.OBJECT}), 211 new Method("toDouble",Types.DOUBLE,new Type[]{Types.BOOLEAN_VALUE}), 212 new Method("toDouble",Types.DOUBLE,new Type[]{Types.DOUBLE_VALUE}), 213 new Method("toDouble",Types.DOUBLE,new Type[]{Types.STRING}) 214 }; 215 216 public static final Method[] TO_DOUBLE_VALUE=new Method[]{ 217 new Method("toDoubleValue",Types.DOUBLE_VALUE,new Type[]{Types.OBJECT}), 218 new Method("toDoubleValue",Types.DOUBLE_VALUE,new Type[]{Types.BOOLEAN_VALUE}), 219 new Method("toDoubleValue",Types.DOUBLE_VALUE,new Type[]{Types.DOUBLE_VALUE}), 220 new Method("toDoubleValue",Types.DOUBLE_VALUE,new Type[]{Types.STRING}) 221 }; 222 223}