Changeset 200:18950fd59129 in livinglogic.java.ul4

Show
Ignore:
Timestamp:
02/15/09 19:00:17 (9 years ago)
Author:
Walter Doerwald <walter@…>
Branch:
default
Message:

Add two argument version of int().

Location:
library/src/com/livinglogic/ul4
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • library/src/com/livinglogic/ul4/Main.java

    r198 r200  
    1010    { 
    1111        Long c = new Long(42); 
    12         Template tmpl = Compiler.compile("<?print json(c)?>"); 
     12        Template tmpl = Compiler.compile("<?print int('42', 16)?>"); 
    1313        System.out.println(tmpl); 
    1414        long start = System.currentTimeMillis(); 
  • library/src/com/livinglogic/ul4/Opcode.java

    r184 r200  
    103103    public static final int CF2_GET = 1; 
    104104    public static final int CF2_ZIP = 2; 
     105    public static final int CF2_INT = 3; 
    105106 
    106107    public static final int CF3_RANGE = 0; 
     
    374375        else if (name.equals("zip")) 
    375376            return CF2_ZIP; 
     377        else if (name.equals("int")) 
     378            return CF2_INT; 
    376379        else 
    377380            throw new UnknownFunctionException(name); 
  • library/src/com/livinglogic/ul4/Template.java

    r196 r200  
    112112     * The version number used in the compiled format of the template. 
    113113     */ 
    114     public static final String VERSION = "7"; 
     114    public static final String VERSION = "8"; 
    115115 
    116116    /** 
     
    11961196                                    reg[code.r1] = Utils.zip(reg[code.r2], reg[code.r3]); 
    11971197                                    break; 
     1198                                case Opcode.CF2_INT: 
     1199                                    reg[code.r1] = Utils.toInteger(reg[code.r2], reg[code.r3]); 
     1200                                    break; 
    11981201                            } 
    11991202                            break; 
     
    20072010                            code(buffer, indent, "reg" + opcode.r1 + " = itertools.izip(reg" + opcode.r2 + ", reg" + opcode.r3 + ")"); 
    20082011                            break; 
     2012                        case Opcode.CF2_INT: 
     2013                            code(buffer, indent, "reg" + opcode.r1 + " = int(reg" + opcode.r2 + ", reg" + opcode.r3 + ")"); 
     2014                            break; 
    20092015                    } 
    20102016                    break; 
  • library/src/com/livinglogic/ul4/Utils.java

    r198 r200  
    707707    } 
    708708 
     709    public static Object toInteger(String obj1, Integer obj2) 
     710    { 
     711        return Integer.valueOf(obj1, obj2.intValue()); 
     712    } 
     713 
     714    public static Object toInteger(Object obj1, Object obj2) 
     715    { 
     716        if (obj1 instanceof String && obj2 instanceof Integer) 
     717        { 
     718            return toInteger((String)obj1, (Integer)obj2); 
     719        } 
     720        throw new UnsupportedOperationException("Can't convert instance of " + obj1.getClass() + " to an integer using " + obj2.getClass() + " as base!"); 
     721    } 
     722 
    709723    public static String repr(Object obj) 
    710724    {