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_Operator {
007    
008            public static final Method OPERATOR_EQV_BV_BV=new Method(
009                                                                                                    "eqv",
010                                                                                                    Types.BOOLEAN_VALUE,
011                                                                                                    new Type[]{Types.BOOLEAN_VALUE,Types.BOOLEAN_VALUE}
012                                                                                            );
013    
014            public static final Method OPERATOR_IMP_BV_BV=new Method(
015                                                                                                    "imp",
016                                                                                                    Types.BOOLEAN_VALUE,
017                                                                                                    new Type[]{Types.BOOLEAN_VALUE,Types.BOOLEAN_VALUE}
018                                                                                            );
019    
020            public static final Method OPERATOR_CT=new Method(
021                                                                                                    "ct",
022                                                                                                    Types.BOOLEAN_VALUE,
023                                                                                                    new Type[]{Types.OBJECT,Types.OBJECT}
024                                                                                            );
025            public static final Method OPERATOR_EEQ=new Method(
026                            "eeq",
027                            Types.BOOLEAN_VALUE,
028                            new Type[]{Types.OBJECT,Types.OBJECT}
029                    );
030            public static final Method OPERATOR_NEEQ=new Method(
031                            "neeq",
032                            Types.BOOLEAN_VALUE,
033                            new Type[]{Types.OBJECT,Types.OBJECT}
034                    );
035    
036            public static final Method OPERATOR_NCT=new Method(
037                                                                                                    "nct",
038                                                                                                    Types.BOOLEAN_VALUE,
039                                                                                                    new Type[]{Types.OBJECT,Types.OBJECT}
040                                                                                            );
041            
042            // double exponent(double left, double right)
043            
044            
045        public static final Method[][] OPERATORS=new Method[][]{
046            // Object    
047            new Method[] {
048                            new Method("compare",Types.INT_VALUE,new Type[]{Types.OBJECT,Types.OBJECT}),
049                            new Method("compare",Types.INT_VALUE,new Type[]{Types.OBJECT,Types.BOOLEAN_VALUE}),
050                            new Method("compare",Types.INT_VALUE,new Type[]{Types.OBJECT,Types.DOUBLE_VALUE}),
051                            new Method("compare",Types.INT_VALUE,new Type[]{Types.OBJECT,Types.STRING})
052            },
053            // boolean    
054            new Method[] {
055                            new Method("compare",Types.INT_VALUE,new Type[]{Types.BOOLEAN_VALUE,Types.OBJECT}),
056                            new Method("compare",Types.INT_VALUE,new Type[]{Types.BOOLEAN_VALUE,Types.BOOLEAN_VALUE}),
057                            new Method("compare",Types.INT_VALUE,new Type[]{Types.BOOLEAN_VALUE,Types.DOUBLE_VALUE}),
058                            new Method("compare",Types.INT_VALUE,new Type[]{Types.BOOLEAN_VALUE,Types.STRING})
059            },
060            // double    
061            new Method[] {
062                            new Method("compare",Types.INT_VALUE,new Type[]{Types.DOUBLE_VALUE,Types.OBJECT}),
063                            new Method("compare",Types.INT_VALUE,new Type[]{Types.DOUBLE_VALUE,Types.BOOLEAN_VALUE}),
064                            new Method("compare",Types.INT_VALUE,new Type[]{Types.DOUBLE_VALUE,Types.DOUBLE_VALUE}),
065                            new Method("compare",Types.INT_VALUE,new Type[]{Types.DOUBLE_VALUE,Types.STRING})
066            },
067            // String    
068            new Method[] {
069                            new Method("compare",Types.INT_VALUE,new Type[]{Types.STRING,Types.OBJECT}),
070                            new Method("compare",Types.INT_VALUE,new Type[]{Types.STRING,Types.BOOLEAN_VALUE}),
071                            new Method("compare",Types.INT_VALUE,new Type[]{Types.STRING,Types.DOUBLE_VALUE}),
072                            new Method("compare",Types.INT_VALUE,new Type[]{Types.STRING,Types.STRING})
073            }
074        };
075    }