Skip to content

Commit 79b0294

Browse files
author
James Roseborough
committed
Refactor string conversions
1 parent 10450a0 commit 79b0294

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+267
-239
lines changed

names.csv

+3-3
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ Java Type Coercion Functions,,,,,,,,,,,,
3636
,toint,int,0,0,0,0,this.v,0,this.v | 0,0,0,0
3737
,tolong,long,0,0,0,0,this.v,0,this.v | 0,0,0,0
3838
,toshort,short,0,0,0,0,this.v | 0,0,this.v | 0,0,0,0
39-
,toString,String,"""true""|""false""","""closure: x""","""name""",(str) this.v,(str) this.v,"""nil""",this.v,"""table: x""","""thread: x""","""userdata: x"""
39+
,tojstring,String,"""true""|""false""","""closure: x""","""name""",(str) this.v,(str) this.v,"""nil""",this.v,"""table: x""","""thread: x""","""userdata: x"""
4040
,touserdata,Object,null,null,null,null,null,null,null,null,this,this.instance
4141

4242
,,,LuaBoolean,LuaClosure,LuaFunction,LuaDouble,LuaInteger,LuaNil,LuaString,LuaTable,LuaThread,LuaUserdata
@@ -49,7 +49,7 @@ Optional Argument Conversion Functions,,,,,,,,,,,,
4949
,optinteger,LuaInteger,e,e,e,(int) this,this,defval,this | e,e,e,e
5050
,optlong,long,e,e,e,(long) this,this,defval,this | e,e,e,e
5151
,optnumber,LuaNumber,e,e,e,this,this,defval,this | e,e,e,e
52-
,optString,String,e,e,e,(str) this.v,(str) this.v,defval,this,e,e,e
52+
,optjstring,String,e,e,e,(str) this.v,(str) this.v,defval,this,e,e,e
5353
,optstring,LuaString,e,e,e,(str) this.v,(str) this.v,defval,this,e,e,e
5454
,opttable,LuaTable,e,e,e,e,e,defval,e,this,e,e
5555
,optthread,LuaThread,e,e,e,e,e,defval,e,e,this,n
@@ -65,7 +65,7 @@ Required Argument Conversion Functions,,,,,,,,,,,,
6565
,checkinteger,LuaInteger,e,e,e,e,this,e,e,e,e,e
6666
,checklong,LuaNumber,e,e,e,this | e,this,e,e,e,e,e
6767
,checknumber,LuaNumber,e,e,e,this,this,e,e,e,e,e
68-
,checkString,String,e,e,e,(str) this.v,(str) this.v,e,(str) this.v,e,e,e
68+
,checkjstring,String,e,e,e,(str) this.v,(str) this.v,e,(str) this.v,e,e,e
6969
,checkstring,LuaString,e,e,e,(str) this.v,(str) this.v,e,this,e,e,e
7070
,checktable,LuaTable,e,e,e,e,e,e,e,this,e,e
7171
,checkthread,LuaThread,e,e,e,e,e,e,e,e,this,e

src/core/org/luaj/vm2/Buffer.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ public Buffer( int initialCapacity ) {
4141
length = 0;
4242
}
4343

44-
public final String toString() {
45-
return LuaString.valueOf(bytes, 0, length).toString();
44+
public final String tojstring() {
45+
return LuaString.valueOf(bytes, 0, length).tojstring();
4646
}
4747

4848
public final void append( byte b ) {

src/core/org/luaj/vm2/LocVars.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public LocVars(LuaString varname, int startpc, int endpc) {
3232
this.endpc = endpc;
3333
}
3434

35-
public String toString() {
35+
public String tojstring() {
3636
return varname+" "+startpc+"-"+endpc;
3737
}
3838
}

src/core/org/luaj/vm2/LuaBoolean.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public boolean toboolean() {
5555
return v;
5656
}
5757

58-
public String toString() {
58+
public String tojstring() {
5959
return v ? "true" : "false";
6060
}
6161

src/core/org/luaj/vm2/LuaDouble.java

+22-20
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,10 @@ public class LuaDouble extends LuaNumber {
3030
public static final LuaDouble NAN = new LuaDouble( Double.NaN );
3131
public static final LuaDouble POSINF = new LuaDouble( Double.POSITIVE_INFINITY );
3232
public static final LuaDouble NEGINF = new LuaDouble( Double.NEGATIVE_INFINITY );
33+
public static final String JSTR_NAN = "nan";
34+
public static final String JSTR_POSINF = "inf";
35+
public static final String JSTR_NEGINF = "-inf";
3336

34-
private static Hashtable ALIASES = new Hashtable();
35-
static {
36-
ALIASES.put( "NaN", "nan" );
37-
ALIASES.put( "Infinity", "inf" );
38-
ALIASES.put( "-Infinity", "-inf" );
39-
}
40-
4137
final double v;
4238

4339
public static LuaNumber valueOf(double d) {
@@ -135,31 +131,37 @@ public static LuaValue dmod(double lhs, double rhs) {
135131
public String concat_s(LuaValue rhs) { return rhs.concatTo_s(Double.toString(v)); }
136132
public String concatTo_s(String lhs) { return lhs + v; }
137133

138-
public String toString() {
134+
public String tojstring() {
139135
/*
140136
if ( v == 0.0 ) { // never occurs in J2me
141137
long bits = Double.doubleToLongBits( v );
142138
return ( bits >> 63 == 0 ) ? "0" : "-0";
143139
}
144140
*/
145141
long l = (long) v;
146-
if ( l == v ) return Long.toString(l);
147-
String s = Double.toString(v);
148-
Object n = ALIASES.get(s);
149-
return n!=null? (String)n: s;
142+
if ( l == v )
143+
return Long.toString(l);
144+
if ( Double.isNaN(v) )
145+
return JSTR_NAN;
146+
if ( Double.isInfinite(v) )
147+
return (v<0? JSTR_NEGINF: JSTR_POSINF);
148+
return Double.toString(v);
150149
}
151150

152151
public LuaString strvalue() {
153-
return LuaString.valueOf(toString());
152+
return LuaString.valueOf(tojstring());
154153
}
155154

156155
public LuaString optstring(LuaString defval) {
157-
return LuaString.valueOf(toString());
156+
return LuaString.valueOf(tojstring());
158157
}
159158

160-
public String optString(String defval) {
161-
long l = (long)v;
162-
return v==l? Long.toString(l): Double.toString(v);
159+
public LuaValue tostring() {
160+
return LuaString.valueOf(tojstring());
161+
}
162+
163+
public String optjstring(String defval) {
164+
return tojstring();
163165
}
164166

165167
public LuaNumber optnumber(LuaNumber defval) {
@@ -182,11 +184,11 @@ public LuaValue tonumber() {
182184
public LuaNumber checknumber() { return this; }
183185
public double checkdouble() { return v; }
184186

185-
public String checkString() {
186-
return toString();
187+
public String checkjstring() {
188+
return tojstring();
187189
}
188190
public LuaString checkstring() {
189-
return LuaString.valueOf(toString());
191+
return LuaString.valueOf(tojstring());
190192
}
191193

192194
}

src/core/org/luaj/vm2/LuaError.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ private static String errorHook(String msg) {
4141
LuaThread thread = LuaThread.getRunning();
4242
if ( thread.err != null ) {
4343
try {
44-
return thread.err.call( LuaValue.valueOf(msg) ).toString();
44+
return thread.err.call( LuaValue.valueOf(msg) ).tojstring();
4545
} catch ( Throwable t ) {
4646
return "error in error handling";
4747
}

src/core/org/luaj/vm2/LuaInteger.java

+7-3
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ public static LuaNumber valueOf(long l) {
6666
public LuaInteger optinteger(LuaInteger defval) { return this; }
6767
public long optlong(long defval) { return v; }
6868

69-
public String toString() {
69+
public String tojstring() {
7070
return Integer.toString(v);
7171
}
7272

@@ -77,8 +77,12 @@ public LuaString strvalue() {
7777
public LuaString optstring(LuaString defval) {
7878
return LuaString.valueOf(Integer.toString(v));
7979
}
80+
81+
public LuaValue tostring() {
82+
return LuaString.valueOf(Integer.toString(v));
83+
}
8084

81-
public String optString(String defval) {
85+
public String optjstring(String defval) {
8286
return Integer.toString(v);
8387
}
8488

@@ -157,7 +161,7 @@ public long checklong() {
157161
public double checkdouble() {
158162
return v;
159163
}
160-
public String checkString() {
164+
public String checkjstring() {
161165
return String.valueOf(v);
162166
}
163167
public LuaString checkstring() {

src/core/org/luaj/vm2/LuaNil.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public String typename() {
3535
return "nil";
3636
}
3737

38-
public String toString() {
38+
public String tojstring() {
3939
return "nil";
4040
}
4141

@@ -74,7 +74,7 @@ public LuaValue checknotnil() {
7474
public LuaNumber optnumber(LuaNumber defval) { return defval; }
7575
public LuaTable opttable(LuaTable defval) { return defval; }
7676
public LuaThread optthread(LuaThread defval) { return defval; }
77-
public String optString(String defval) { return defval; }
77+
public String optjstring(String defval) { return defval; }
7878
public LuaString optstring(LuaString defval) { return defval; }
7979
public Object optuserdata(Object defval) { return defval; }
8080
public Object optuserdata(Class c, Object defval) { return defval; }

src/core/org/luaj/vm2/LuaString.java

+12-8
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ public String typename() {
9898
return "string";
9999
}
100100

101-
public String toString() {
101+
public String tojstring() {
102102
return decodeAsUtf8(m_bytes, m_offset, m_length);
103103
}
104104

@@ -145,8 +145,8 @@ public LuaValue get(LuaValue key) {
145145
public boolean gteq_b( double rhs ) { typerror("attempt to compare string with number"); return false; }
146146

147147
// concatenation
148-
public String concat_s(LuaValue rhs) { return rhs.concatTo_s(toString()); }
149-
public String concatTo_s(String lhs) { return lhs + toString(); }
148+
public String concat_s(LuaValue rhs) { return rhs.concatTo_s(tojstring()); }
149+
public String concatTo_s(String lhs) { return lhs + tojstring(); }
150150

151151
// string comparison
152152
public int strcmp(LuaValue lhs) { return -lhs.strcmp(this); }
@@ -230,9 +230,13 @@ public LuaNumber optnumber(LuaNumber defval) {
230230
public LuaString optstring(LuaString defval) {
231231
return this;
232232
}
233-
234-
public String optString(String defval) {
235-
return toString();
233+
234+
public LuaValue tostring() {
235+
return this;
236+
}
237+
238+
public String optjstring(String defval) {
239+
return tojstring();
236240
}
237241

238242
public LuaString strvalue() {
@@ -313,8 +317,8 @@ public int charAt( int index ) {
313317
return luaByte( index );
314318
}
315319

316-
public String checkString() {
317-
return toString();
320+
public String checkjstring() {
321+
return tojstring();
318322
}
319323

320324
public LuaString checkstring() {

src/core/org/luaj/vm2/LuaTable.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ public LuaValue setmetatable(LuaValue metatable) {
121121
m_metatable = metatable;
122122
LuaValue mode;
123123
if ( m_metatable!=null && (mode=m_metatable.rawget(MODE)).isstring() ) {
124-
String m = mode.toString();
124+
String m = mode.tojstring();
125125
boolean k = m.indexOf('k')>=0;
126126
boolean v = m.indexOf('v')>=0;
127127
return changemode(k,v);

src/core/org/luaj/vm2/LuaUserdata.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public LuaUserdata(Object obj, LuaValue metatable) {
3636
m_metatable = metatable;
3737
}
3838

39-
public String toString() {
39+
public String tojstring() {
4040
return String.valueOf(m_instance);
4141
}
4242

src/core/org/luaj/vm2/LuaValue.java

+17-5
Original file line numberDiff line numberDiff line change
@@ -103,13 +103,19 @@ public class LuaValue extends Varargs {
103103
public int toint() { return 0; }
104104
public long tolong() { return 0; }
105105
public short toshort() { return 0; }
106-
public String toString() { return typename() + ": " + Integer.toHexString(hashCode()); }
106+
public String tojstring() { return typename() + ": " + Integer.toHexString(hashCode()); }
107107
public Object touserdata() { return null; }
108108
public Object touserdata(Class c) { return null; }
109109

110+
// object tojstring() maps to tojstring()
111+
public String toString() { return tojstring(); }
112+
110113
// type coercion to lua values
111114
/** @return NIL if not a number or convertible to a number */
112115
public LuaValue tonumber() { return NIL; }
116+
117+
/** @return NIL if not a string or number */
118+
public LuaValue tostring() { return NIL; }
113119

114120
// optional argument conversions
115121
public boolean optboolean(boolean defval) { typerror("boolean"); return false; }
@@ -120,14 +126,17 @@ public class LuaValue extends Varargs {
120126
public LuaInteger optinteger(LuaInteger defval) { typerror("integer"); return null; }
121127
public long optlong(long defval) { typerror("long"); return 0; }
122128
public LuaNumber optnumber(LuaNumber defval) { typerror("number"); return null; }
123-
public String optString(String defval) { typerror("String"); return null; }
129+
public String optjstring(String defval) { typerror("String"); return null; }
124130
public LuaString optstring(LuaString defval) { typerror("string"); return null; }
125131
public LuaTable opttable(LuaTable defval) { typerror("table"); return null; }
126132
public LuaThread optthread(LuaThread defval) { typerror("thread"); return null; }
127133
public Object optuserdata(Object defval) { typerror("object"); return null; }
128134
public Object optuserdata(Class c, Object defval) { typerror(c.getName()); return null; }
129135
public LuaValue optvalue(LuaValue defval) { return this; }
130136

137+
/** @deprecated - use optjstring() instead */
138+
public String optString(String defval) { return optjstring(defval); }
139+
131140
// argument type checks
132141
public boolean checkboolean() { typerror("boolean"); return false; }
133142
public LuaClosure checkclosure() { typerror("closure"); return null; }
@@ -137,14 +146,17 @@ public class LuaValue extends Varargs {
137146
public LuaInteger checkinteger() { typerror("integer"); return null; }
138147
public long checklong() { typerror("long"); return 0; }
139148
public LuaNumber checknumber() { typerror("number"); return null; }
140-
public String checkString() { typerror("string"); return null; }
149+
public String checkjstring() { typerror("string"); return null; }
141150
public LuaString checkstring() { typerror("string"); return null; }
142151
public LuaTable checktable() { typerror("table"); return null; }
143152
public LuaThread checkthread() { typerror("thread"); return null; }
144153
public Object checkuserdata() { typerror("userdata"); return null; }
145154
public Object checkuserdata(Class c) { typerror("userdata"); return null; }
146155
public LuaValue checknotnil() { return this; }
147156

157+
/** @deprecated - use checkjstring() instead */
158+
public String checkString() { return checkjstring(); }
159+
148160
// errors
149161
public static LuaValue error(String message) { throw new LuaError(message); }
150162
public static LuaValue error(int iarg, String message) { throw new LuaError("arg "+iarg+": "+message); }
@@ -441,7 +453,7 @@ private static final class None extends LuaNil {
441453
public LuaValue arg(int i) { return NIL; }
442454
public int narg() { return 0; }
443455
public LuaValue arg1() { return NIL; }
444-
public String toString() { return "none"; }
456+
public String tojstring() { return "none"; }
445457
}
446458

447459
// varargs from array
@@ -507,7 +519,7 @@ public int narg() {
507519
public LuaValue arg1() {
508520
return v1;
509521
}
510-
public String toString() {
522+
public String tojstring() {
511523
return "{"+v1+","+v2+"}";
512524
}
513525
}

src/core/org/luaj/vm2/Print.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ static void printString(PrintStream ps, final LuaString s) {
122122
static void printValue( PrintStream ps, LuaValue v ) {
123123
switch ( v.type() ) {
124124
case LuaValue.TSTRING: printString( ps, (LuaString) v ); break;
125-
default: ps.print( v.toString() );
125+
default: ps.print( v.tojstring() );
126126

127127
}
128128
}
@@ -356,12 +356,12 @@ else switch ( v.type() ) {
356356
case LuaValue.TSTRING:
357357
LuaString s = v.checkstring();
358358
ps.print( s.length() < 48?
359-
s.toString():
360-
s.substring(0, 32).toString()+"...+"+(s.length()-32)+"b");
359+
s.tojstring():
360+
s.substring(0, 32).tojstring()+"...+"+(s.length()-32)+"b");
361361
break;
362362
case LuaValue.TFUNCTION:
363363
ps.print( ( v instanceof LuaClosure )?
364-
((LuaClosure)v).p.toString(): v.toString() );
364+
((LuaClosure)v).p.tojstring(): v.tojstring() );
365365
break;
366366
case LuaValue.TUSERDATA:
367367
Object o = v.touserdata();
@@ -370,7 +370,7 @@ else switch ( v.type() ) {
370370
ps.print( n+": "+Integer.toHexString(o.hashCode()) );
371371
break;
372372
default:
373-
ps.print(v.toString());
373+
ps.print(v.tojstring());
374374
}
375375
if ( i+1 == top )
376376
ps.print(']');

src/core/org/luaj/vm2/Prototype.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public class Prototype {
4444
public int maxstacksize;
4545

4646

47-
public String toString() {
47+
public String tojstring() {
4848
return source + ":" + linedefined;
4949
}
5050

src/core/org/luaj/vm2/UpValue.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ public UpValue( LuaValue[] stack, int index) {
3333
this.index = index;
3434
}
3535

36-
public String toString() {
37-
return array[index].toString();
36+
public String tojstring() {
37+
return array[index].tojstring();
3838
}
3939

4040
public final LuaValue getValue() {

0 commit comments

Comments
 (0)