Mercurial Hosting > luan
comparison core/src/luan/impl/LuanStateImpl.java @ 647:8e8c30b72e9b
move methods from LuanState to Luan
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Tue, 29 Mar 2016 20:39:14 -0600 |
parents | cdc70de628b5 |
children | 140cc5191b7a |
comparison
equal
deleted
inserted
replaced
646:cdc70de628b5 | 647:8e8c30b72e9b |
---|---|
115 @Override public void setJava() { | 115 @Override public void setJava() { |
116 ((LuanTable)frame.closure.upValues()[0].get()).hasJava = true; | 116 ((LuanTable)frame.closure.upValues()[0].get()).hasJava = true; |
117 } | 117 } |
118 | 118 |
119 | 119 |
120 | |
121 @Override public boolean isLessThan(Object o1,Object o2) throws LuanException { | |
122 if( o1 instanceof Number && o2 instanceof Number ) { | |
123 Number n1 = (Number)o1; | |
124 Number n2 = (Number)o2; | |
125 return n1.doubleValue() < n2.doubleValue(); | |
126 } | |
127 if( o1 instanceof String && o2 instanceof String ) { | |
128 String s1 = (String)o1; | |
129 String s2 = (String)o2; | |
130 return s1.compareTo(s2) < 0; | |
131 } | |
132 LuanFunction fn = getBinHandler("__lt",o1,o2); | |
133 if( fn != null ) | |
134 return checkBoolean( Luan.first(fn.call(this,new Object[]{o1,o2})) ); | |
135 throw new LuanException( "attempt to compare " + Luan.type(o1) + " with " + Luan.type(o2) ); | |
136 } | |
137 | |
138 LuanFunction getBinHandler(String op,Object o1,Object o2) throws LuanException { | |
139 if( o1 instanceof LuanTable ) { | |
140 LuanFunction f1 = getHandlerFunction(op,(LuanTable)o1); | |
141 if( f1 != null ) | |
142 return f1; | |
143 } | |
144 return o2 instanceof LuanTable ? getHandlerFunction(op,(LuanTable)o2) : null; | |
145 } | |
146 | |
147 LuanFunction getHandlerFunction(String op,LuanTable t) throws LuanException { | |
148 Object f = t.getHandler(op); | |
149 if( f == null ) | |
150 return null; | |
151 return checkFunction(f); | |
152 } | |
153 | |
154 } | 120 } |