Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录/注册
切换导航
H
h2database
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
Administrator
h2database
Commits
5766562e
提交
5766562e
authored
6月 28, 2012
作者:
Thomas Mueller
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Java to C++ converter
上级
890a9624
隐藏空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
158 行增加
和
119 行删除
+158
-119
ClassObj.java
h2/src/tools/org/h2/java/ClassObj.java
+50
-11
Expr.java
h2/src/tools/org/h2/java/Expr.java
+66
-45
JavaParser.java
h2/src/tools/org/h2/java/JavaParser.java
+18
-45
Statement.java
h2/src/tools/org/h2/java/Statement.java
+20
-18
Test.java
h2/src/tools/org/h2/java/Test.java
+1
-0
TestApp.java
h2/src/tools/org/h2/java/TestApp.java
+1
-0
String.java
h2/src/tools/org/h2/java/lang/String.java
+2
-0
没有找到文件。
h2/src/tools/org/h2/java/ClassObj.java
浏览文件 @
5766562e
...
...
@@ -129,7 +129,7 @@ public class ClassObj {
if
(
isPrimitive
)
{
return
"j"
+
className
;
}
return
className
;
return
JavaParser
.
toC
(
className
)
;
}
/**
...
...
@@ -178,6 +178,18 @@ public class ClassObj {
return
instanceFields
.
get
(
name
);
}
public
int
hashCode
()
{
return
className
.
hashCode
();
}
public
boolean
equals
(
Object
other
)
{
if
(
other
instanceof
ClassObj
)
{
ClassObj
c
=
(
ClassObj
)
other
;
return
c
.
className
.
equals
(
className
);
}
return
false
;
}
}
/**
...
...
@@ -343,37 +355,64 @@ class Type {
boolean
isVarArgs
;
/**
* Whether this is a non-array primitive type.
* Use ref-counting.
*/
boolean
refCount
=
JavaParser
.
REF_COUNT
;
/**
* Whether this is a array or an non-primitive type.
*
* @return true if yes
*/
public
boolean
is
SimplePrimitive
()
{
return
arrayLevel
==
0
&&
classObj
.
isPrimitive
;
public
boolean
is
Object
()
{
return
arrayLevel
>
0
||
!
classObj
.
isPrimitive
;
}
public
String
toString
()
{
return
asString
();
}
public
String
asString
()
{
StringBuilder
buff
=
new
StringBuilder
();
for
(
int
i
=
0
;
i
<
arrayLevel
;
i
++)
{
buff
.
append
(
"ptr<array< "
);
if
(
refCount
)
{
buff
.
append
(
"ptr< "
);
}
buff
.
append
(
"array< "
);
}
if
(
refCount
)
{
if
(!
classObj
.
isPrimitive
)
{
buff
.
append
(
"ptr< "
);
}
}
buff
.
append
(
classObj
.
toString
());
if
(
refCount
)
{
if
(!
classObj
.
isPrimitive
)
{
buff
.
append
(
" >"
);
}
}
for
(
int
i
=
0
;
i
<
arrayLevel
;
i
++)
{
buff
.
append
(
" > >"
);
buff
.
append
(
" >"
);
if
(
refCount
)
{
buff
.
append
(
" >"
);
}
}
if
(!
refCount
)
{
if
(
isObject
())
{
buff
.
append
(
"*"
);
}
}
return
buff
.
toString
();
}
boolean
isObject
()
{
return
arrayLevel
>
0
||
!
classObj
.
isPrimitive
;
}
public
int
hashCode
()
{
return
toString
().
hashCode
();
}
public
boolean
equals
(
Object
other
)
{
if
(
other
instanceof
Type
)
{
return
this
.
toString
().
equals
(
other
.
toString
());
Type
t
=
(
Type
)
other
;
return
t
.
classObj
.
equals
(
classObj
)
&&
t
.
arrayLevel
==
arrayLevel
&&
t
.
isVarArgs
==
isVarArgs
;
}
return
false
;
}
...
...
h2/src/tools/org/h2/java/Expr.java
浏览文件 @
5766562e
...
...
@@ -13,15 +13,26 @@ import java.util.Iterator;
* An expression.
*/
public
interface
Expr
{
// toString
String
asString
();
Type
getType
();
Expr
cast
(
Type
type
);
}
/**
* The base expression class.
*/
abstract
class
ExprBase
implements
Expr
{
public
final
String
toString
()
{
return
"_"
+
asString
()
+
"_"
;
}
}
/**
* A method call.
*/
class
CallExpr
implements
Expr
{
class
CallExpr
extends
ExprBase
{
final
ArrayList
<
Expr
>
args
=
new
ArrayList
<
Expr
>();
private
final
JavaParser
context
;
...
...
@@ -53,7 +64,7 @@ class CallExpr implements Expr {
}
}
public
String
to
String
()
{
public
String
as
String
()
{
StringBuilder
buff
=
new
StringBuilder
();
initMethod
();
if
(
method
.
isIgnore
)
{
...
...
@@ -70,7 +81,7 @@ class CallExpr implements Expr {
// static method
buff
.
append
(
JavaParser
.
toC
(
classObj
.
toString
()
+
"."
+
method
.
name
));
}
else
{
buff
.
append
(
expr
.
to
String
()).
append
(
"->"
);
buff
.
append
(
expr
.
as
String
()).
append
(
"->"
);
buff
.
append
(
method
.
name
);
}
buff
.
append
(
"("
);
...
...
@@ -82,7 +93,7 @@ class CallExpr implements Expr {
}
FieldObj
f
=
paramIt
.
next
();
i
++;
buff
.
append
(
a
.
cast
(
f
.
type
));
buff
.
append
(
a
.
cast
(
f
.
type
)
.
asString
()
);
}
buff
.
append
(
")"
);
}
...
...
@@ -103,14 +114,14 @@ class CallExpr implements Expr {
/**
* A assignment expression.
*/
class
AssignExpr
implements
Expr
{
class
AssignExpr
extends
ExprBase
{
Expr
left
;
String
op
;
Expr
right
;
public
String
to
String
()
{
return
left
+
" "
+
op
+
" "
+
right
.
cast
(
left
.
getType
()
);
public
String
as
String
()
{
return
left
.
asString
()
+
" "
+
op
+
" "
+
right
.
cast
(
left
.
getType
()).
asString
(
);
}
public
Type
getType
()
{
...
...
@@ -126,13 +137,13 @@ class AssignExpr implements Expr {
/**
* A conditional expression.
*/
class
ConditionalExpr
implements
Expr
{
class
ConditionalExpr
extends
ExprBase
{
Expr
condition
;
Expr
ifTrue
,
ifFalse
;
public
String
to
String
()
{
return
condition
+
" ? "
+
ifTrue
+
" : "
+
ifFalse
;
public
String
as
String
()
{
return
condition
.
asString
()
+
" ? "
+
ifTrue
.
asString
()
+
" : "
+
ifFalse
.
asString
()
;
}
public
Type
getType
()
{
...
...
@@ -152,7 +163,7 @@ class ConditionalExpr implements Expr {
/**
* A literal.
*/
class
LiteralExpr
implements
Expr
{
class
LiteralExpr
extends
ExprBase
{
String
literal
;
private
final
JavaParser
context
;
...
...
@@ -164,9 +175,9 @@ class LiteralExpr implements Expr {
this
.
className
=
className
;
}
public
String
to
String
()
{
public
String
as
String
()
{
if
(
"null"
.
equals
(
literal
))
{
return
JavaParser
.
toCType
(
type
,
true
)
+
"()"
;
return
type
.
asString
(
)
+
"()"
;
}
return
literal
;
}
...
...
@@ -192,7 +203,7 @@ class LiteralExpr implements Expr {
/**
* An operation.
*/
class
OpExpr
implements
Expr
{
class
OpExpr
extends
ExprBase
{
Expr
left
;
String
op
;
...
...
@@ -203,11 +214,11 @@ class OpExpr implements Expr {
this
.
context
=
context
;
}
public
String
to
String
()
{
public
String
as
String
()
{
if
(
left
==
null
)
{
return
op
+
right
;
return
op
+
right
.
asString
()
;
}
else
if
(
right
==
null
)
{
return
left
+
op
;
return
left
.
asString
()
+
op
;
}
if
(
op
.
equals
(
">>>"
))
{
// ujint / ujlong
...
...
@@ -216,7 +227,11 @@ class OpExpr implements Expr {
if
(
left
.
getType
().
isObject
()
||
right
.
getType
().
isObject
())
{
// TODO convert primitive to to String, call toString
StringBuilder
buff
=
new
StringBuilder
();
buff
.
append
(
"ptr<java_lang_StringBuilder>(new java_lang_StringBuilder("
);
if
(
JavaParser
.
REF_COUNT
)
{
buff
.
append
(
"ptr<java_lang_StringBuilder>(new java_lang_StringBuilder("
);
}
else
{
buff
.
append
(
"(new java_lang_StringBuilder("
);
}
buff
.
append
(
convertToString
(
left
));
buff
.
append
(
"))->append("
);
buff
.
append
(
convertToString
(
right
));
...
...
@@ -224,7 +239,7 @@ class OpExpr implements Expr {
return
buff
.
toString
();
}
}
return
"("
+
left
+
" "
+
op
+
" "
+
right
+
")"
;
return
"("
+
left
.
asString
()
+
" "
+
op
+
" "
+
right
.
asString
()
+
")"
;
}
private
String
convertToString
(
Expr
e
)
{
...
...
@@ -234,11 +249,11 @@ class OpExpr implements Expr {
}
if
(
t
.
classObj
.
isPrimitive
)
{
ClassObj
wrapper
=
context
.
getWrapper
(
t
.
classObj
);
return
JavaParser
.
toC
(
wrapper
+
".toString"
)
+
"("
+
e
.
to
String
()
+
")"
;
}
else
if
(
e
.
getType
().
to
String
().
equals
(
"java_lang_String*"
))
{
return
e
.
to
String
();
return
JavaParser
.
toC
(
wrapper
+
".toString"
)
+
"("
+
e
.
as
String
()
+
")"
;
}
else
if
(
e
.
getType
().
as
String
().
equals
(
"java_lang_String*"
))
{
return
e
.
as
String
();
}
return
e
.
to
String
()
+
"->toString()"
;
return
e
.
as
String
()
+
"->toString()"
;
}
private
static
boolean
isComparison
(
String
op
)
{
...
...
@@ -282,7 +297,7 @@ class OpExpr implements Expr {
/**
* A "new" expression.
*/
class
NewExpr
implements
Expr
{
class
NewExpr
extends
ExprBase
{
ClassObj
classObj
;
ArrayList
<
Expr
>
arrayInitExpr
=
new
ArrayList
<
Expr
>();
...
...
@@ -293,23 +308,29 @@ class NewExpr implements Expr {
this
.
context
=
context
;
}
public
String
to
String
()
{
public
String
as
String
()
{
StringBuilder
buff
=
new
StringBuilder
();
if
(
arrayInitExpr
.
size
()
>
0
)
{
buff
.
append
(
"ptr<array<"
+
classObj
+
"> >(new array<"
+
classObj
+
">(1 "
);
if
(
JavaParser
.
REF_COUNT
)
{
buff
.
append
(
"ptr< array< "
+
classObj
.
toString
()
+
" > >"
);
}
buff
.
append
(
"(new array< "
+
classObj
+
" >(1 "
);
for
(
Expr
e
:
arrayInitExpr
)
{
buff
.
append
(
"* "
).
append
(
e
);
buff
.
append
(
"* "
).
append
(
e
.
asString
()
);
}
buff
.
append
(
"))"
);
}
else
{
buff
.
append
(
"ptr<"
+
JavaParser
.
toC
(
classObj
.
toString
())
+
">(new "
+
JavaParser
.
toC
(
classObj
.
toString
()));
if
(
JavaParser
.
REF_COUNT
)
{
buff
.
append
(
"ptr< "
+
classObj
.
toString
()
+
" >"
);
}
buff
.
append
(
"(new "
+
JavaParser
.
toC
(
classObj
.
toString
()));
buff
.
append
(
"("
);
int
i
=
0
;
for
(
Expr
a
:
args
)
{
if
(
i
++
>
0
)
{
buff
.
append
(
", "
);
}
buff
.
append
(
a
);
buff
.
append
(
a
.
asString
()
);
}
buff
.
append
(
"))"
);
}
...
...
@@ -332,7 +353,7 @@ class NewExpr implements Expr {
/**
* A String literal.
*/
class
StringExpr
implements
Expr
{
class
StringExpr
extends
ExprBase
{
/**
* The constant name.
...
...
@@ -351,7 +372,7 @@ class StringExpr implements Expr {
this
.
context
=
context
;
}
public
String
to
String
()
{
public
String
as
String
()
{
return
constantName
;
}
...
...
@@ -426,7 +447,7 @@ class StringExpr implements Expr {
/**
* A variable.
*/
class
VariableExpr
implements
Expr
{
class
VariableExpr
extends
ExprBase
{
Expr
base
;
FieldObj
field
;
...
...
@@ -437,11 +458,11 @@ class VariableExpr implements Expr {
this
.
context
=
context
;
}
public
String
to
String
()
{
public
String
as
String
()
{
init
();
StringBuilder
buff
=
new
StringBuilder
();
if
(
base
!=
null
)
{
buff
.
append
(
base
.
to
String
()).
append
(
"->"
);
buff
.
append
(
base
.
as
String
()).
append
(
"->"
);
}
if
(
field
!=
null
)
{
if
(
field
.
isStatic
)
{
...
...
@@ -487,12 +508,12 @@ class VariableExpr implements Expr {
/**
* A array access expression.
*/
class
ArrayExpr
implements
Expr
{
class
ArrayExpr
extends
ExprBase
{
Expr
expr
;
ArrayList
<
Expr
>
indexes
=
new
ArrayList
<
Expr
>();
public
String
to
String
()
{
public
String
as
String
()
{
StringBuilder
buff
=
new
StringBuilder
();
buff
.
append
(
expr
.
toString
());
for
(
Expr
e
:
indexes
)
{
...
...
@@ -514,7 +535,7 @@ class ArrayExpr implements Expr {
/**
* An array initializer expression.
*/
class
ArrayInitExpr
implements
Expr
{
class
ArrayInitExpr
extends
ExprBase
{
Type
type
;
ArrayList
<
Expr
>
list
=
new
ArrayList
<
Expr
>();
...
...
@@ -523,7 +544,7 @@ class ArrayInitExpr implements Expr {
return
type
;
}
public
String
to
String
()
{
public
String
as
String
()
{
StringBuilder
buff
=
new
StringBuilder
(
"{ "
);
int
i
=
0
;
for
(
Expr
e
:
list
)
{
...
...
@@ -545,7 +566,7 @@ class ArrayInitExpr implements Expr {
/**
* A type cast expression.
*/
class
CastExpr
implements
Expr
{
class
CastExpr
extends
ExprBase
{
Type
type
;
Expr
expr
;
...
...
@@ -554,8 +575,8 @@ class CastExpr implements Expr {
return
type
;
}
public
String
to
String
()
{
return
"("
+
type
+
") "
+
expr
;
public
String
as
String
()
{
return
"("
+
type
.
asString
()
+
") "
+
expr
.
asString
()
;
}
public
Expr
cast
(
Type
type
)
{
...
...
@@ -567,7 +588,7 @@ class CastExpr implements Expr {
/**
* An array access expression (get or set).
*/
class
ArrayAccessExpr
implements
Expr
{
class
ArrayAccessExpr
extends
ExprBase
{
Expr
base
;
Expr
index
;
...
...
@@ -579,8 +600,8 @@ class ArrayAccessExpr implements Expr {
return
t
;
}
public
String
to
String
()
{
return
base
+
"->at("
+
index
+
")"
;
public
String
as
String
()
{
return
base
.
asString
()
+
"->at("
+
index
.
asString
()
+
")"
;
}
public
Expr
cast
(
Type
type
)
{
...
...
h2/src/tools/org/h2/java/JavaParser.java
浏览文件 @
5766562e
...
...
@@ -22,6 +22,8 @@ import org.h2.util.New;
*/
public
class
JavaParser
{
public
static
final
boolean
REF_COUNT
=
true
;
private
static
final
HashMap
<
String
,
ClassObj
>
BUILT_IN_CLASSES
=
New
.
hashMap
();
private
static
final
int
TOKEN_LITERAL_CHAR
=
0
;
...
...
@@ -1561,7 +1563,7 @@ public class JavaParser {
if
(
f
.
isFinal
)
{
buff
.
append
(
"const "
);
}
buff
.
append
(
toCType
(
f
.
type
,
!
f
.
isLocalField
));
buff
.
append
(
f
.
type
.
asString
(
));
buff
.
append
(
" "
).
append
(
toC
(
c
.
className
+
"."
+
f
.
name
));
buff
.
append
(
";"
);
out
.
println
(
buff
.
toString
());
...
...
@@ -1572,14 +1574,14 @@ public class JavaParser {
continue
;
}
if
(
m
.
isStatic
)
{
out
.
print
(
toCType
(
m
.
returnType
,
true
));
out
.
print
(
m
.
returnType
.
asString
(
));
out
.
print
(
" "
+
toC
(
c
.
className
+
"_"
+
m
.
name
)
+
"("
);
int
i
=
0
;
for
(
FieldObj
p
:
m
.
parameters
.
values
())
{
if
(
i
>
0
)
{
out
.
print
(
", "
);
}
out
.
print
(
toCType
(
p
.
type
,
false
)
+
" "
+
p
.
name
);
out
.
print
(
p
.
type
.
asString
(
)
+
" "
+
p
.
name
);
i
++;
}
out
.
println
(
");"
);
...
...
@@ -1600,7 +1602,7 @@ public class JavaParser {
out
.
println
(
"public:"
);
for
(
FieldObj
f
:
c
.
instanceFields
.
values
())
{
out
.
print
(
" "
);
out
.
print
(
toCType
(
f
.
type
,
!
f
.
isLocalField
)
+
" "
+
f
.
name
);
out
.
print
(
f
.
type
.
asString
(
)
+
" "
+
f
.
name
);
if
(
f
.
value
!=
null
)
{
out
.
print
(
" = "
+
f
.
value
);
}
...
...
@@ -1618,14 +1620,14 @@ public class JavaParser {
if
(
m
.
isConstructor
)
{
out
.
print
(
" "
+
toC
(
c
.
className
)
+
"("
);
}
else
{
out
.
print
(
" "
+
toCType
(
m
.
returnType
,
true
)
+
" "
+
m
.
name
+
"("
);
out
.
print
(
" "
+
m
.
returnType
.
asString
(
)
+
" "
+
m
.
name
+
"("
);
}
int
i
=
0
;
for
(
FieldObj
p
:
m
.
parameters
.
values
())
{
if
(
i
>
0
)
{
out
.
print
(
", "
);
}
out
.
print
(
toCType
(
p
.
type
,
false
));
out
.
print
(
p
.
type
.
asString
(
));
out
.
print
(
" "
+
p
.
name
);
i
++;
}
...
...
@@ -1638,7 +1640,11 @@ public class JavaParser {
Collections
.
sort
(
constantNames
);
for
(
String
c
:
constantNames
)
{
String
s
=
stringConstantToStringMap
.
get
(
c
);
out
.
println
(
"ptr<java_lang_String> "
+
c
+
" = STRING(L\""
+
s
+
"\");"
);
if
(
JavaParser
.
REF_COUNT
)
{
out
.
println
(
"ptr<java_lang_String> "
+
c
+
" = STRING(L\""
+
s
+
"\");"
);
}
else
{
out
.
println
(
"java_lang_String* "
+
c
+
" = STRING(L\""
+
s
+
"\");"
);
}
}
}
...
...
@@ -1658,10 +1664,10 @@ public class JavaParser {
if
(
f
.
isFinal
)
{
buff
.
append
(
"const "
);
}
buff
.
append
(
toCType
(
f
.
type
,
!
f
.
isLocalField
));
buff
.
append
(
f
.
type
.
asString
(
));
buff
.
append
(
" "
).
append
(
toC
(
c
.
className
+
"."
+
f
.
name
));
if
(
f
.
value
!=
null
)
{
buff
.
append
(
" = "
+
f
.
value
);
buff
.
append
(
" = "
).
append
(
f
.
value
.
asString
()
);
}
buff
.
append
(
";"
);
out
.
println
(
buff
.
toString
());
...
...
@@ -1672,18 +1678,18 @@ public class JavaParser {
continue
;
}
if
(
m
.
isStatic
)
{
out
.
print
(
toCType
(
m
.
returnType
,
true
)
+
" "
+
toC
(
c
.
className
+
"_"
+
m
.
name
)
+
"("
);
out
.
print
(
m
.
returnType
.
asString
(
)
+
" "
+
toC
(
c
.
className
+
"_"
+
m
.
name
)
+
"("
);
}
else
if
(
m
.
isConstructor
)
{
out
.
print
(
toC
(
c
.
className
)
+
"::"
+
toC
(
c
.
className
)
+
"("
);
}
else
{
out
.
print
(
toCType
(
m
.
returnType
,
true
)
+
" "
+
toC
(
c
.
className
)
+
"::"
+
m
.
name
+
"("
);
out
.
print
(
m
.
returnType
.
asString
(
)
+
" "
+
toC
(
c
.
className
)
+
"::"
+
m
.
name
+
"("
);
}
int
i
=
0
;
for
(
FieldObj
p
:
m
.
parameters
.
values
())
{
if
(
i
>
0
)
{
out
.
print
(
", "
);
}
out
.
print
(
toCType
(
p
.
type
,
false
)
+
" "
+
p
.
name
);
out
.
print
(
p
.
type
.
asString
(
)
+
" "
+
p
.
name
);
i
++;
}
out
.
println
(
") {"
);
...
...
@@ -1737,39 +1743,6 @@ public class JavaParser {
return
identifier
.
replace
(
'.'
,
'_'
);
}
static
String
toCType
(
Type
type
,
boolean
refCounted
)
{
// TODO not everything needs to be ref-counted
refCounted
=
true
;
StringBuilder
buff
=
new
StringBuilder
();
for
(
int
i
=
0
;
i
<
type
.
arrayLevel
;
i
++)
{
if
(
refCounted
)
{
buff
.
append
(
"ptr<array< "
);
}
else
{
buff
.
append
(
"array< "
);
}
}
if
(
type
.
classObj
.
isPrimitive
)
{
buff
.
append
(
toC
(
type
.
classObj
.
toString
()));
}
else
{
if
(
refCounted
)
{
buff
.
append
(
"ptr<"
).
append
(
toC
(
type
.
classObj
.
toString
())).
append
(
'>'
);
}
else
{
buff
.
append
(
toC
(
type
.
classObj
.
toString
()));
}
}
for
(
int
i
=
0
;
i
<
type
.
arrayLevel
;
i
++)
{
if
(
refCounted
)
{
buff
.
append
(
" > >"
);
}
else
{
buff
.
append
(
" >"
);
}
}
if
(!
refCounted
)
{
buff
.
append
(
"*"
);
}
return
buff
.
toString
();
}
ClassObj
getClassObj
()
{
return
classObj
;
}
...
...
h2/src/tools/org/h2/java/Statement.java
浏览文件 @
5766562e
...
...
@@ -41,10 +41,13 @@ class ReturnStatement extends StatementBase {
if
(
expr
==
null
)
{
return
"return;"
;
}
if
(
expr
.
getType
().
isSimplePrimitive
())
{
return
"return "
+
expr
+
";"
;
if
(
!
expr
.
getType
().
isObject
())
{
return
"return "
+
expr
.
asString
()
+
";"
;
}
return
"return "
+
JavaParser
.
toCType
(
expr
.
getType
(),
true
)
+
"("
+
expr
+
");"
;
if
(
JavaParser
.
REF_COUNT
)
{
return
"return "
+
expr
.
getType
().
asString
()
+
"("
+
expr
.
asString
()
+
");"
;
}
return
"return "
+
expr
.
asString
()
+
";"
;
}
}
...
...
@@ -58,7 +61,7 @@ class DoWhileStatement extends StatementBase {
Statement
block
;
public
String
toString
()
{
return
"do {\n"
+
block
+
"} while ("
+
condition
+
");"
;
return
"do {\n"
+
block
+
"} while ("
+
condition
.
asString
()
+
");"
;
}
}
...
...
@@ -108,9 +111,9 @@ class SwitchStatement extends StatementBase {
public
String
toString
()
{
StringBuilder
buff
=
new
StringBuilder
();
buff
.
append
(
"switch ("
).
append
(
expr
).
append
(
") {\n"
);
buff
.
append
(
"switch ("
).
append
(
expr
.
asString
()
).
append
(
") {\n"
);
for
(
int
i
=
0
;
i
<
cases
.
size
();
i
++)
{
buff
.
append
(
"case "
+
cases
.
get
(
i
)
+
":\n"
);
buff
.
append
(
"case "
+
cases
.
get
(
i
)
.
asString
()
+
":\n"
);
buff
.
append
(
blocks
.
get
(
i
).
toString
());
}
if
(
defaultBlock
!=
null
)
{
...
...
@@ -131,7 +134,7 @@ class ExprStatement extends StatementBase {
Expr
expr
;
public
String
toString
()
{
return
expr
+
";"
;
return
expr
.
asString
()
+
";"
;
}
}
...
...
@@ -145,7 +148,7 @@ class WhileStatement extends StatementBase {
Statement
block
;
public
String
toString
()
{
String
w
=
"while ("
+
condition
+
")"
;
String
w
=
"while ("
+
condition
.
asString
()
+
")"
;
String
s
=
block
.
toString
();
return
w
+
"\n"
+
s
;
}
...
...
@@ -162,7 +165,7 @@ class IfStatement extends StatementBase {
Statement
elseBlock
;
public
String
toString
()
{
String
w
=
"if ("
+
condition
+
") {\n"
;
String
w
=
"if ("
+
condition
.
asString
()
+
") {\n"
;
String
s
=
block
.
toString
();
if
(
elseBlock
!=
null
)
{
s
+=
"} else {\n"
+
elseBlock
.
toString
();
...
...
@@ -179,7 +182,6 @@ class ForStatement extends StatementBase {
Statement
init
;
Expr
condition
;
Expr
update
;
Statement
block
;
ArrayList
<
Expr
>
updates
=
new
ArrayList
<
Expr
>();
Type
iterableType
;
...
...
@@ -193,9 +195,9 @@ class ForStatement extends StatementBase {
Type
it
=
iterable
.
getType
();
if
(
it
!=
null
&&
it
.
arrayLevel
>
0
)
{
String
idx
=
"i_"
+
iterableVariable
;
buff
.
append
(
"int "
+
idx
+
" = 0; "
+
idx
+
" < "
+
iterable
+
"->length(); "
+
idx
+
"++"
);
buff
.
append
(
"int "
+
idx
+
" = 0; "
+
idx
+
" < "
+
iterable
.
asString
()
+
"->length(); "
+
idx
+
"++"
);
buff
.
append
(
") {\n"
);
buff
.
append
(
JavaParser
.
indent
(
iterableType
+
" "
+
iterableVariable
+
" = "
+
iterable
+
"->at("
+
idx
+
");\n"
));
buff
.
append
(
JavaParser
.
indent
(
iterableType
+
" "
+
iterableVariable
+
" = "
+
iterable
.
asString
()
+
"->at("
+
idx
+
");\n"
));
buff
.
append
(
block
.
toString
()).
append
(
"}"
);
}
else
{
// TODO iterate over a collection
...
...
@@ -207,12 +209,12 @@ class ForStatement extends StatementBase {
}
}
else
{
buff
.
append
(
init
.
toString
());
buff
.
append
(
" "
).
append
(
condition
.
to
String
()).
append
(
"; "
);
buff
.
append
(
" "
).
append
(
condition
.
as
String
()).
append
(
"; "
);
for
(
int
i
=
0
;
i
<
updates
.
size
();
i
++)
{
if
(
i
>
0
)
{
buff
.
append
(
", "
);
}
buff
.
append
(
updates
.
get
(
i
));
buff
.
append
(
updates
.
get
(
i
)
.
asString
()
);
}
buff
.
append
(
") {\n"
);
buff
.
append
(
block
.
toString
()).
append
(
"}"
);
...
...
@@ -253,7 +255,7 @@ class VarDecStatement extends StatementBase {
public
String
toString
()
{
StringBuilder
buff
=
new
StringBuilder
();
buff
.
append
(
JavaParser
.
toCType
(
type
,
true
)).
append
(
' '
);
buff
.
append
(
type
.
asString
(
)).
append
(
' '
);
StringBuilder
assign
=
new
StringBuilder
();
for
(
int
i
=
0
;
i
<
variables
.
size
();
i
++)
{
if
(
i
>
0
)
{
...
...
@@ -263,10 +265,10 @@ class VarDecStatement extends StatementBase {
buff
.
append
(
varName
);
Expr
value
=
values
.
get
(
i
);
if
(
value
!=
null
)
{
if
(
value
.
getType
().
isSimplePrimitive
())
{
buff
.
append
(
" = "
).
append
(
value
);
if
(
!
value
.
getType
().
isObject
())
{
buff
.
append
(
" = "
).
append
(
value
.
asString
()
);
}
else
{
assign
.
append
(
varName
).
append
(
" = "
).
append
(
value
).
append
(
";\n"
);
assign
.
append
(
varName
).
append
(
" = "
).
append
(
value
.
asString
()
).
append
(
";\n"
);
}
}
}
...
...
h2/src/tools/org/h2/java/Test.java
浏览文件 @
5766562e
...
...
@@ -86,4 +86,5 @@ public class Test extends TestBase {
w
.
close
();
}
}
h2/src/tools/org/h2/java/TestApp.java
浏览文件 @
5766562e
...
...
@@ -14,6 +14,7 @@ public class TestApp {
/* c:
int main(int argc, char** argv) {
// org_h2_java_TestApp_main(0);
org_h2_java_TestApp_main(ptr<array<ptr<java_lang_String> > >());
}
...
...
h2/src/tools/org/h2/java/lang/String.java
浏览文件 @
5766562e
...
...
@@ -33,6 +33,8 @@ import org.h2.java.Local;
#define STRING(s) ptr<java_lang_String>(new java_lang_String(ptr< array<jchar> >(new array<jchar>(s, (jint) wcslen(s)))));
// #define STRING(s) new java_lang_String(new array<jchar>(s, (jint) wcslen(s)));
class RefBase {
protected:
jint refCount;
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论