Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
D
djinni
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
cpp-libs
djinni
Commits
6b17a860
Commit
6b17a860
authored
Mar 05, 2015
by
Miro Knejp
Committed by
Jacob Potter
May 01, 2015
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Use marshalling objects to generate code for function parameter types
parent
982d0a17
Changes
21
Hide whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
107 additions
and
137 deletions
+107
-137
example/generated-src/jni/NativeSortItems.cpp
example/generated-src/jni/NativeSortItems.cpp
+1
-1
example/generated-src/objc/TXSSortItems.h
example/generated-src/objc/TXSSortItems.h
+1
-1
example/generated-src/objc/TXSSortItems.mm
example/generated-src/objc/TXSSortItems.mm
+1
-1
src/source/CppGenerator.scala
src/source/CppGenerator.scala
+1
-1
src/source/CppMarshal.scala
src/source/CppMarshal.scala
+9
-8
src/source/JNIGenerator.scala
src/source/JNIGenerator.scala
+7
-9
src/source/JNIMarshal.scala
src/source/JNIMarshal.scala
+3
-0
src/source/JavaGenerator.scala
src/source/JavaGenerator.scala
+3
-3
src/source/JavaMarshal.scala
src/source/JavaMarshal.scala
+5
-2
src/source/Marshal.scala
src/source/Marshal.scala
+5
-0
src/source/ObjcGenerator.scala
src/source/ObjcGenerator.scala
+4
-12
src/source/ObjcMarshal.scala
src/source/ObjcMarshal.scala
+23
-1
src/source/ObjcppGenerator.scala
src/source/ObjcppGenerator.scala
+8
-16
src/source/ObjcppMarshal.scala
src/source/ObjcppMarshal.scala
+7
-4
src/source/generator.scala
src/source/generator.scala
+0
-49
test-suite/generated-src/jni/NativeCppException.cpp
test-suite/generated-src/jni/NativeCppException.cpp
+2
-2
test-suite/generated-src/jni/NativeTestHelpers.cpp
test-suite/generated-src/jni/NativeTestHelpers.cpp
+17
-17
test-suite/generated-src/objc/DBCppException.h
test-suite/generated-src/objc/DBCppException.h
+1
-1
test-suite/generated-src/objc/DBCppException.mm
test-suite/generated-src/objc/DBCppException.mm
+1
-1
test-suite/generated-src/objc/DBTestHelpers.h
test-suite/generated-src/objc/DBTestHelpers.h
+4
-4
test-suite/generated-src/objc/DBTestHelpers.mm
test-suite/generated-src/objc/DBTestHelpers.mm
+4
-4
No files found.
example/generated-src/jni/NativeSortItems.cpp
View file @
6b17a860
...
@@ -42,7 +42,7 @@ CJNIEXPORT jobject JNICALL Java_com_dropbox_textsort_SortItems_createWithListene
...
@@ -42,7 +42,7 @@ CJNIEXPORT jobject JNICALL Java_com_dropbox_textsort_SortItems_createWithListene
std
::
shared_ptr
<::
textsort
::
SortItems
>
cr
=
::
textsort
::
SortItems
::
create_with_listener
(
c_listener
);
std
::
shared_ptr
<::
textsort
::
SortItems
>
cr
=
::
textsort
::
SortItems
::
create_with_listener
(
c_listener
);
return
NativeSortItems
::
toJava
(
jniEnv
,
cr
);
return
NativeSortItems
::
toJava
(
jniEnv
,
cr
);
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
0
/* value doesn't matter */
)
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
0
/* value doesn't matter */
)
}
}
}
// namespace djinni_generated
}
// namespace djinni_generated
example/generated-src/objc/TXSSortItems.h
View file @
6b17a860
...
@@ -12,6 +12,6 @@
...
@@ -12,6 +12,6 @@
-
(
void
)
sort
:(
TXSSortOrder
)
order
items
:(
TXSItemList
*
)
items
;
-
(
void
)
sort
:(
TXSSortOrder
)
order
items
:(
TXSItemList
*
)
items
;
+
(
TXSSortItems
*
)
createWithListener
:(
id
<
TXSTextboxListener
>
)
listener
;
+
(
TXSSortItems
*
)
createWithListener
:(
id
<
TXSTextboxListener
>
)
listener
;
@end
@end
example/generated-src/objc/TXSSortItems.mm
View file @
6b17a860
...
@@ -51,7 +51,7 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th
...
@@ -51,7 +51,7 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th
}
DJINNI_TRANSLATE_EXCEPTIONS
()
}
DJINNI_TRANSLATE_EXCEPTIONS
()
}
}
+
(
TXSSortItems
*
)
createWithListener
:(
id
<
TXSTextboxListener
>
)
listener
{
+
(
TXSSortItems
*
)
createWithListener
:(
id
<
TXSTextboxListener
>
)
listener
{
try
{
try
{
std
::
shared_ptr
<::
textsort
::
TextboxListener
>
cppListener
=
::
djinni_generated
::
TextboxListenerObjcProxy
::
textbox_listener_with_objc
(
listener
);
std
::
shared_ptr
<::
textsort
::
TextboxListener
>
cppListener
=
::
djinni_generated
::
TextboxListenerObjcProxy
::
textbox_listener_with_objc
(
listener
);
std
::
shared_ptr
<::
textsort
::
SortItems
>
cppRet
=
::
textsort
::
SortItems
::
create_with_listener
(
std
::
move
(
cppListener
));
std
::
shared_ptr
<::
textsort
::
SortItems
>
cppRet
=
::
textsort
::
SortItems
::
create_with_listener
(
std
::
move
(
cppListener
));
...
...
src/source/CppGenerator.scala
View file @
6b17a860
...
@@ -318,7 +318,7 @@ class CppGenerator(spec: Spec) extends Generator(spec) {
...
@@ -318,7 +318,7 @@ class CppGenerator(spec: Spec) extends Generator(spec) {
w
.
wl
w
.
wl
writeDoc
(
w
,
m
.
doc
)
writeDoc
(
w
,
m
.
doc
)
val
ret
=
m
.
ret
.
fold
(
"void"
)(
marshal
.
typename
(
_
))
val
ret
=
m
.
ret
.
fold
(
"void"
)(
marshal
.
typename
(
_
))
val
params
=
m
.
params
.
map
(
toCppParamType
)
val
params
=
m
.
params
.
map
(
p
=>
marshal
.
paramType
(
p
.
ty
)
+
" "
+
idCpp
.
local
(
p
.
ident
)
)
if
(
m
.
static
)
{
if
(
m
.
static
)
{
w
.
wl
(
s
"static $ret ${idCpp.method(m.ident)}${params.mkString("
(
", "
,
", "
)
")};"
)
w
.
wl
(
s
"static $ret ${idCpp.method(m.ident)}${params.mkString("
(
", "
,
", "
)
")};"
)
}
else
{
}
else
{
...
...
src/source/CppMarshal.scala
View file @
6b17a860
...
@@ -20,6 +20,9 @@ class CppMarshal(spec: Spec) extends Marshal(spec) {
...
@@ -20,6 +20,9 @@ class CppMarshal(spec: Spec) extends Marshal(spec) {
case
r
:
Record
=>
withNs
(
spec
.
cppNamespace
,
idCpp
.
ty
(
name
))
case
r
:
Record
=>
withNs
(
spec
.
cppNamespace
,
idCpp
.
ty
(
name
))
}
}
override
def
paramType
(
tm
:
MExpr
)
:
String
=
toCppParamType
(
tm
)
override
def
fqParamType
(
tm
:
MExpr
)
:
String
=
toCppParamType
(
tm
,
spec
.
cppNamespace
)
private
def
toCppType
(
ty
:
TypeRef
,
namespace
:
Option
[
String
]
=
None
)
:
String
=
toCppType
(
ty
.
resolved
,
namespace
)
private
def
toCppType
(
ty
:
TypeRef
,
namespace
:
Option
[
String
]
=
None
)
:
String
=
toCppType
(
ty
.
resolved
,
namespace
)
private
def
toCppType
(
tm
:
MExpr
,
namespace
:
Option
[
String
])
:
String
=
{
private
def
toCppType
(
tm
:
MExpr
,
namespace
:
Option
[
String
])
:
String
=
{
def
base
(
m
:
Meta
)
:
String
=
m
match
{
def
base
(
m
:
Meta
)
:
String
=
m
match
{
...
@@ -47,15 +50,13 @@ class CppMarshal(spec: Spec) extends Marshal(spec) {
...
@@ -47,15 +50,13 @@ class CppMarshal(spec: Spec) extends Marshal(spec) {
}
}
// this can be used in c++ generation to know whether a const& should be applied to the parameter or not
// this can be used in c++ generation to know whether a const& should be applied to the parameter or not
private
def
toCppParamType
(
f
:
Field
)
:
String
=
toCppParamType
(
f
,
None
,
""
)
private
def
toCppParamType
(
tm
:
MExpr
,
namespace
:
Option
[
String
]
=
None
)
:
String
=
{
private
def
toCppParamType
(
f
:
Field
,
namespace
:
Option
[
String
]
=
None
,
prefix
:
String
=
""
)
:
String
=
{
val
cppType
=
toCppType
(
tm
,
namespace
)
val
cppType
=
toCppType
(
f
.
ty
,
namespace
)
val
refType
=
"const "
+
cppType
+
" &"
val
localName
=
prefix
+
idCpp
.
local
(
f
.
ident
);
val
valueType
=
cppType
val
refType
=
"const "
+
cppType
+
" & "
+
localName
val
valueType
=
cppType
+
" "
+
localName
def
toType
(
expr
:
MExpr
)
:
String
=
expr
.
base
match
{
def
toType
(
expr
:
MExpr
)
:
String
=
expr
.
base
match
{
case
MPrimitive
(
_
,
_
,
_
,
_
,
_
,
_
,
_
,
_
)
=>
valueType
case
p
:
MPrimitive
=>
valueType
case
d
:
MDef
=>
d
.
defType
match
{
case
d
:
MDef
=>
d
.
defType
match
{
case
DEnum
=>
valueType
case
DEnum
=>
valueType
case
_
=>
refType
case
_
=>
refType
...
@@ -63,6 +64,6 @@ class CppMarshal(spec: Spec) extends Marshal(spec) {
...
@@ -63,6 +64,6 @@ class CppMarshal(spec: Spec) extends Marshal(spec) {
case
MOptional
=>
toType
(
expr
.
args
.
head
)
case
MOptional
=>
toType
(
expr
.
args
.
head
)
case
_
=>
refType
case
_
=>
refType
}
}
toType
(
f
.
ty
.
resolved
)
toType
(
tm
)
}
}
}
}
src/source/JNIGenerator.scala
View file @
6b17a860
...
@@ -205,12 +205,12 @@ class JNIGenerator(spec: Spec) extends Generator(spec) {
...
@@ -205,12 +205,12 @@ class JNIGenerator(spec: Spec) extends Generator(spec) {
}
}
if
(
i
.
ext
.
java
)
{
if
(
i
.
ext
.
java
)
{
w
.
wl
w
.
wl
w
.
w
(
s
"class JavaProxy final : djinni::JavaProxyCacheEntry, public $
{withNs(spec.cppNamespace, idCpp.ty(ident))}
"
).
bracedSemi
{
w
.
w
(
s
"class JavaProxy final : djinni::JavaProxyCacheEntry, public $
cppSelf
"
).
bracedSemi
{
w
.
wlOutdent
(
s
"public:"
)
w
.
wlOutdent
(
s
"public:"
)
w
.
wl
(
s
"JavaProxy(jobject obj);"
)
w
.
wl
(
s
"JavaProxy(jobject obj);"
)
for
(
m
<-
i
.
methods
)
{
for
(
m
<-
i
.
methods
)
{
val
ret
=
m
.
ret
.
fold
(
"void"
)(
cppMarshal
.
fqTypename
)
val
ret
=
m
.
ret
.
fold
(
"void"
)(
cppMarshal
.
fqTypename
)
val
params
=
m
.
params
.
map
(
p
=>
toCppParamType
(
p
,
spec
.
cppNamespace
))
val
params
=
m
.
params
.
map
(
p
=>
cppMarshal
.
fqParamType
(
p
.
ty
)
+
" "
+
idCpp
.
local
(
p
.
ident
))
w
.
wl
(
s
"virtual $ret ${idCpp.method(m.ident)}${params.mkString("
(
", "
,
", "
)
")} override;"
)
w
.
wl
(
s
"virtual $ret ${idCpp.method(m.ident)}${params.mkString("
(
", "
,
", "
)
")} override;"
)
}
}
w
.
wl
w
.
wl
...
@@ -239,7 +239,7 @@ class JNIGenerator(spec: Spec) extends Generator(spec) {
...
@@ -239,7 +239,7 @@ class JNIGenerator(spec: Spec) extends Generator(spec) {
for
(
m
<-
i
.
methods
)
{
for
(
m
<-
i
.
methods
)
{
w
.
wl
w
.
wl
val
ret
=
m
.
ret
.
fold
(
"void"
)(
cppMarshal
.
fqTypename
)
val
ret
=
m
.
ret
.
fold
(
"void"
)(
cppMarshal
.
fqTypename
)
val
params
=
m
.
params
.
map
(
p
=>
toCppParamType
(
p
,
spec
.
cppNamespace
,
"c_"
))
val
params
=
m
.
params
.
map
(
p
=>
cppMarshal
.
fqParamType
(
p
.
ty
)
+
" c_"
+
idCpp
.
local
(
p
.
ident
))
writeJniTypeParams
(
w
,
typeParams
)
writeJniTypeParams
(
w
,
typeParams
)
w
.
w
(
s
"$ret $jniSelf::JavaProxy::JavaProxy::${idCpp.method(m.ident)}${params.mkString("
(
", "
,
", "
)
")}"
).
bracedSemi
{
w
.
w
(
s
"$ret $jniSelf::JavaProxy::JavaProxy::${idCpp.method(m.ident)}${params.mkString("
(
", "
,
", "
)
")}"
).
bracedSemi
{
w
.
wl
(
s
"JNIEnv * const jniEnv = djinni::jniGetThreadEnv();"
)
w
.
wl
(
s
"JNIEnv * const jniEnv = djinni::jniGetThreadEnv();"
)
...
@@ -277,15 +277,14 @@ class JNIGenerator(spec: Spec) extends Generator(spec) {
...
@@ -277,15 +277,14 @@ class JNIGenerator(spec: Spec) extends Generator(spec) {
.
replaceAllLiterally
(
"."
,
"_"
)
.
replaceAllLiterally
(
"."
,
"_"
)
val
prefix
=
"Java_"
+
classIdentMunged
val
prefix
=
"Java_"
+
classIdentMunged
def
nativeHook
(
name
:
String
,
static
:
Boolean
,
params
:
Iterable
[
Field
],
ret
:
Option
[
TypeRef
],
f
:
=>
Unit
)
=
{
def
nativeHook
(
name
:
String
,
static
:
Boolean
,
params
:
Iterable
[
Field
],
ret
:
Option
[
TypeRef
],
f
:
=>
Unit
)
=
{
val
paramList
=
params
.
map
(
p
=>
toJni
Type
(
p
.
ty
)
+
" j_"
+
idJava
.
local
(
p
.
ident
)).
mkString
(
", "
)
val
paramList
=
params
.
map
(
p
=>
jniMarshal
.
param
Type
(
p
.
ty
)
+
" j_"
+
idJava
.
local
(
p
.
ident
)).
mkString
(
", "
)
val
jniRetType
=
ret
.
fold
(
"void"
)(
toJniType
)
val
jniRetType
=
ret
.
fold
(
"void"
)(
toJniType
)
w
.
wl
w
.
wl
val
methodNameMunged
=
name
.
replaceAllLiterally
(
"_"
,
"_1"
)
val
methodNameMunged
=
name
.
replaceAllLiterally
(
"_"
,
"_1"
)
val
zero
=
ret
.
fold
(
""
)(
s
=>
"0 /* value doesn't matter */"
)
if
(
static
)
{
if
(
static
)
{
w
.
wl
(
s
"CJNIEXPORT $jniRetType JNICALL ${prefix}_$methodNameMunged(JNIEnv* jniEnv, jobject /*this*/${preComma(paramList)})"
).
braced
{
w
.
wl
(
s
"CJNIEXPORT $jniRetType JNICALL ${prefix}_$methodNameMunged(JNIEnv* jniEnv, jobject /*this*/${preComma(paramList)})"
).
braced
{
w
.
w
(
"try"
).
bracedEnd
(
s
" JNI_TRANSLATE_EXCEPTIONS_RETURN(jniEnv, ${
w
.
w
(
"try"
).
bracedEnd
(
s
" JNI_TRANSLATE_EXCEPTIONS_RETURN(jniEnv, $zero)"
)
{
ret.fold("")(s => "
0
/* value doesn't matter */
")
})"
)
{
w
.
wl
(
s
"DJINNI_FUNCTION_PROLOGUE0(jniEnv);"
)
w
.
wl
(
s
"DJINNI_FUNCTION_PROLOGUE0(jniEnv);"
)
f
f
}
}
...
@@ -293,8 +292,7 @@ class JNIGenerator(spec: Spec) extends Generator(spec) {
...
@@ -293,8 +292,7 @@ class JNIGenerator(spec: Spec) extends Generator(spec) {
}
}
else
{
else
{
w
.
wl
(
s
"CJNIEXPORT $jniRetType JNICALL ${prefix}_00024CppProxy_$methodNameMunged(JNIEnv* jniEnv, jobject /*this*/, jlong nativeRef${preComma(paramList)})"
).
braced
{
w
.
wl
(
s
"CJNIEXPORT $jniRetType JNICALL ${prefix}_00024CppProxy_$methodNameMunged(JNIEnv* jniEnv, jobject /*this*/, jlong nativeRef${preComma(paramList)})"
).
braced
{
val
zero
=
"0 /* value doesn't matter*/"
w
.
w
(
"try"
).
bracedEnd
(
s
" JNI_TRANSLATE_EXCEPTIONS_RETURN(jniEnv, $zero)"
)
{
w
.
w
(
"try"
).
bracedEnd
(
s
" JNI_TRANSLATE_EXCEPTIONS_RETURN(jniEnv, ${ret.fold("")(s => zero)})"
)
{
w
.
wl
(
s
"DJINNI_FUNCTION_PROLOGUE1(jniEnv, nativeRef);"
)
w
.
wl
(
s
"DJINNI_FUNCTION_PROLOGUE1(jniEnv, nativeRef);"
)
f
f
}
}
...
...
src/source/JNIMarshal.scala
View file @
6b17a860
...
@@ -13,6 +13,9 @@ class JNIMarshal(spec: Spec) extends Marshal(spec) {
...
@@ -13,6 +13,9 @@ class JNIMarshal(spec: Spec) extends Marshal(spec) {
override
def
fqTypename
(
tm
:
MExpr
)
:
String
=
typename
(
tm
)
override
def
fqTypename
(
tm
:
MExpr
)
:
String
=
typename
(
tm
)
def
fqTypename
(
name
:
String
,
ty
:
TypeDef
)
:
String
=
typename
(
name
,
ty
)
def
fqTypename
(
name
:
String
,
ty
:
TypeDef
)
:
String
=
typename
(
name
,
ty
)
override
def
paramType
(
tm
:
MExpr
)
:
String
=
toJniType
(
tm
,
false
)
override
def
fqParamType
(
tm
:
MExpr
)
:
String
=
paramType
(
tm
)
// Name for the autogenerated class containing field/method IDs and toJava()/fromJava() methods
// Name for the autogenerated class containing field/method IDs and toJava()/fromJava() methods
def
helperClass
(
name
:
String
)
=
spec
.
jniClassIdentStyle
(
name
)
def
helperClass
(
name
:
String
)
=
spec
.
jniClassIdentStyle
(
name
)
def
fqHelperClass
(
name
:
String
)
=
withNs
(
Some
(
spec
.
jniNamespace
),
helperClass
(
name
))
def
fqHelperClass
(
name
:
String
)
=
withNs
(
Some
(
spec
.
jniNamespace
),
helperClass
(
name
))
...
...
src/source/JavaGenerator.scala
View file @
6b17a860
...
@@ -152,14 +152,14 @@ class JavaGenerator(spec: Spec) extends Generator(spec) {
...
@@ -152,14 +152,14 @@ class JavaGenerator(spec: Spec) extends Generator(spec) {
skipFirst
{
w
.
wl
}
skipFirst
{
w
.
wl
}
writeDoc
(
w
,
m
.
doc
)
writeDoc
(
w
,
m
.
doc
)
val
ret
=
m
.
ret
.
fold
(
"void"
)(
marshal
.
typename
(
_
))
val
ret
=
m
.
ret
.
fold
(
"void"
)(
marshal
.
typename
(
_
))
val
params
=
m
.
params
.
map
(
p
=>
marshal
.
typenam
e
(
p
.
ty
)
+
" "
+
idJava
.
local
(
p
.
ident
))
val
params
=
m
.
params
.
map
(
p
=>
marshal
.
paramTyp
e
(
p
.
ty
)
+
" "
+
idJava
.
local
(
p
.
ident
))
w
.
wl
(
"public abstract "
+
ret
+
" "
+
idJava
.
method
(
m
.
ident
)
+
params
.
mkString
(
"("
,
", "
,
")"
)
+
throwException
+
";"
)
w
.
wl
(
"public abstract "
+
ret
+
" "
+
idJava
.
method
(
m
.
ident
)
+
params
.
mkString
(
"("
,
", "
,
")"
)
+
throwException
+
";"
)
}
}
for
(
m
<-
i
.
methods
if
m
.
static
)
{
for
(
m
<-
i
.
methods
if
m
.
static
)
{
skipFirst
{
w
.
wl
}
skipFirst
{
w
.
wl
}
writeDoc
(
w
,
m
.
doc
)
writeDoc
(
w
,
m
.
doc
)
val
ret
=
m
.
ret
.
fold
(
"void"
)(
marshal
.
typename
(
_
))
val
ret
=
m
.
ret
.
fold
(
"void"
)(
marshal
.
typename
(
_
))
val
params
=
m
.
params
.
map
(
p
=>
marshal
.
typenam
e
(
p
.
ty
)
+
" "
+
idJava
.
local
(
p
.
ident
))
val
params
=
m
.
params
.
map
(
p
=>
marshal
.
paramTyp
e
(
p
.
ty
)
+
" "
+
idJava
.
local
(
p
.
ident
))
w
.
wl
(
"public static native "
+
ret
+
" "
+
idJava
.
method
(
m
.
ident
)
+
params
.
mkString
(
"("
,
", "
,
")"
)
+
";"
)
w
.
wl
(
"public static native "
+
ret
+
" "
+
idJava
.
method
(
m
.
ident
)
+
params
.
mkString
(
"("
,
", "
,
")"
)
+
";"
)
}
}
if
(
i
.
ext
.
cpp
)
{
if
(
i
.
ext
.
cpp
)
{
...
@@ -186,7 +186,7 @@ class JavaGenerator(spec: Spec) extends Generator(spec) {
...
@@ -186,7 +186,7 @@ class JavaGenerator(spec: Spec) extends Generator(spec) {
for
(
m
<-
i
.
methods
if
!
m
.
static
)
{
// Static methods not in CppProxy
for
(
m
<-
i
.
methods
if
!
m
.
static
)
{
// Static methods not in CppProxy
val
ret
=
m
.
ret
.
fold
(
"void"
)(
marshal
.
typename
(
_
))
val
ret
=
m
.
ret
.
fold
(
"void"
)(
marshal
.
typename
(
_
))
val
returnStmt
=
m
.
ret
.
fold
(
""
)(
_
=>
"return "
)
val
returnStmt
=
m
.
ret
.
fold
(
""
)(
_
=>
"return "
)
val
params
=
m
.
params
.
map
(
p
=>
marshal
.
typename
(
p
.
ty
)+
" "
+
idJava
.
local
(
p
.
ident
)).
mkString
(
", "
)
val
params
=
m
.
params
.
map
(
p
=>
marshal
.
paramType
(
p
.
ty
)
+
" "
+
idJava
.
local
(
p
.
ident
)).
mkString
(
", "
)
val
args
=
m
.
params
.
map
(
p
=>
idJava
.
local
(
p
.
ident
)).
mkString
(
", "
)
val
args
=
m
.
params
.
map
(
p
=>
idJava
.
local
(
p
.
ident
)).
mkString
(
", "
)
val
meth
=
idJava
.
method
(
m
.
ident
)
val
meth
=
idJava
.
method
(
m
.
ident
)
w
.
wl
w
.
wl
...
...
src/source/JavaMarshal.scala
View file @
6b17a860
...
@@ -12,7 +12,10 @@ class JavaMarshal(spec: Spec) extends Marshal(spec) {
...
@@ -12,7 +12,10 @@ class JavaMarshal(spec: Spec) extends Marshal(spec) {
override
def
fqTypename
(
tm
:
MExpr
)
:
String
=
toJavaType
(
tm
,
spec
.
javaPackage
)
override
def
fqTypename
(
tm
:
MExpr
)
:
String
=
toJavaType
(
tm
,
spec
.
javaPackage
)
def
fqTypename
(
name
:
String
,
ty
:
TypeDef
)
:
String
=
withPackage
(
spec
.
javaPackage
,
idJava
.
ty
(
name
))
def
fqTypename
(
name
:
String
,
ty
:
TypeDef
)
:
String
=
withPackage
(
spec
.
javaPackage
,
idJava
.
ty
(
name
))
def
toJavaType
(
tm
:
MExpr
,
packageName
:
Option
[
String
])
:
String
=
{
override
def
paramType
(
tm
:
MExpr
)
:
String
=
typename
(
tm
)
override
def
fqParamType
(
tm
:
MExpr
)
:
String
=
fqTypename
(
tm
)
private
def
toJavaType
(
tm
:
MExpr
,
packageName
:
Option
[
String
])
:
String
=
{
def
f
(
tm
:
MExpr
,
needRef
:
Boolean
)
:
String
=
{
def
f
(
tm
:
MExpr
,
needRef
:
Boolean
)
:
String
=
{
tm
.
base
match
{
tm
.
base
match
{
case
MOptional
=>
case
MOptional
=>
...
@@ -44,6 +47,6 @@ class JavaMarshal(spec: Spec) extends Marshal(spec) {
...
@@ -44,6 +47,6 @@ class JavaMarshal(spec: Spec) extends Marshal(spec) {
f
(
tm
,
false
)
f
(
tm
,
false
)
}
}
def
withPackage
(
packageName
:
Option
[
String
],
t
:
String
)
=
packageName
.
fold
(
t
)(
_
+
"."
+
t
)
private
def
withPackage
(
packageName
:
Option
[
String
],
t
:
String
)
=
packageName
.
fold
(
t
)(
_
+
"."
+
t
)
}
}
src/source/Marshal.scala
View file @
6b17a860
...
@@ -16,6 +16,11 @@ abstract class Marshal(spec: Spec) {
...
@@ -16,6 +16,11 @@ abstract class Marshal(spec: Spec) {
// Same as typename() but always fully namespace or package qualified
// Same as typename() but always fully namespace or package qualified
def
fqTypename
(
tm
:
MExpr
)
:
String
def
fqTypename
(
tm
:
MExpr
)
:
String
def
fqTypename
(
ty
:
TypeRef
)
:
String
=
fqTypename
(
ty
.
resolved
)
def
fqTypename
(
ty
:
TypeRef
)
:
String
=
fqTypename
(
ty
.
resolved
)
// Type signature for a function parameter
def
paramType
(
tm
:
MExpr
)
:
String
def
paramType
(
ty
:
TypeRef
)
:
String
=
paramType
(
ty
.
resolved
)
def
fqParamType
(
tm
:
MExpr
)
:
String
def
fqParamType
(
ty
:
TypeRef
)
:
String
=
fqParamType
(
ty
.
resolved
)
implicit
def
identToString
(
ident
:
Ident
)
:
String
=
ident
.
name
implicit
def
identToString
(
ident
:
Ident
)
:
String
=
ident
.
name
protected
val
idCpp
=
spec
.
cppIdentStyle
protected
val
idCpp
=
spec
.
cppIdentStyle
...
...
src/source/ObjcGenerator.scala
View file @
6b17a860
...
@@ -154,12 +154,12 @@ class ObjcGenerator(spec: Spec) extends Generator(spec) {
...
@@ -154,12 +154,12 @@ class ObjcGenerator(spec: Spec) extends Generator(spec) {
def
writeObjcFuncDecl
(
method
:
Interface.Method
,
w
:
IndentWriter
)
{
def
writeObjcFuncDecl
(
method
:
Interface.Method
,
w
:
IndentWriter
)
{
val
label
=
if
(
method
.
static
)
"+"
else
"-"
val
label
=
if
(
method
.
static
)
"+"
else
"-"
val
ret
=
method
.
ret
.
fold
(
"void"
)(
toObjcFullType
(
_
)
)
val
ret
=
method
.
ret
.
fold
(
"void"
)(
marshal
.
paramType
)
w
.
w
(
s
"$label ($ret)${idObjc.method(method.ident)}"
)
w
.
w
(
s
"$label ($ret)${idObjc.method(method.ident)}"
)
val
skipFirst
=
SkipFirst
()
val
skipFirst
=
SkipFirst
()
for
(
p
<-
method
.
params
)
{
for
(
p
<-
method
.
params
)
{
skipFirst
{
w
.
w
(
s
" ${idObjc.local(p.ident)}"
)
}
skipFirst
{
w
.
w
(
s
" ${idObjc.local(p.ident)}"
)
}
w
.
w
(
s
":(${
toObjcFull
Type(p.ty)})${idObjc.local(p.ident)}"
)
w
.
w
(
s
":(${
marshal.param
Type(p.ty)})${idObjc.local(p.ident)}"
)
}
}
}
}
...
@@ -234,9 +234,9 @@ class ObjcGenerator(spec: Spec) extends Generator(spec) {
...
@@ -234,9 +234,9 @@ class ObjcGenerator(spec: Spec) extends Generator(spec) {
if
(!
r
.
fields
.
isEmpty
)
{
if
(!
r
.
fields
.
isEmpty
)
{
val
head
=
r
.
fields
.
head
val
head
=
r
.
fields
.
head
val
skipFirst
=
SkipFirst
()
val
skipFirst
=
SkipFirst
()
w
.
w
(
s
"- (id)${idObjc.method("
init_with_
" + head.ident.name)}:(${
toObjcFull
Type(head.ty)})${idObjc.local(head.ident)}"
)
w
.
w
(
s
"- (id)${idObjc.method("
init_with_
" + head.ident.name)}:(${
marshal.param
Type(head.ty)})${idObjc.local(head.ident)}"
)
for
(
f
<-
r
.
fields
)
skipFirst
{
for
(
f
<-
r
.
fields
)
skipFirst
{
w
.
w
(
s
" ${idObjc.field(f.ident)}:(${
toObjcFull
Type(f.ty)})${idObjc.field(f.ident)}"
)
w
.
w
(
s
" ${idObjc.field(f.ident)}:(${
marshal.param
Type(f.ty)})${idObjc.field(f.ident)}"
)
}
}
w
.
wl
(
";"
)
w
.
wl
(
";"
)
}
}
...
@@ -310,14 +310,6 @@ class ObjcGenerator(spec: Spec) extends Generator(spec) {
...
@@ -310,14 +310,6 @@ class ObjcGenerator(spec: Spec) extends Generator(spec) {
f
(
tm
,
needRef
)
f
(
tm
,
needRef
)
}
}
def
toObjcFullType
(
ty
:
TypeRef
)
:
String
=
toObjcFullType
(
ty
.
resolved
,
false
)
def
toObjcFullType
(
ty
:
TypeRef
,
needRef
:
Boolean
)
:
String
=
toObjcFullType
(
ty
.
resolved
,
needRef
)
def
toObjcFullType
(
tm
:
MExpr
)
:
String
=
toObjcFullType
(
tm
,
false
)
def
toObjcFullType
(
tm
:
MExpr
,
needRef
:
Boolean
=
false
)
:
String
=
{
val
(
name
,
asterisk
)
=
toObjcType
(
tm
,
needRef
)
name
+
(
if
(
asterisk
)
" *"
else
""
)
}
def
toObjcTypeDef
(
ty
:
TypeRef
)
:
String
=
toObjcTypeDef
(
ty
.
resolved
,
false
)
def
toObjcTypeDef
(
ty
:
TypeRef
)
:
String
=
toObjcTypeDef
(
ty
.
resolved
,
false
)
def
toObjcTypeDef
(
ty
:
TypeRef
,
needRef
:
Boolean
)
:
String
=
toObjcTypeDef
(
ty
.
resolved
,
needRef
)
def
toObjcTypeDef
(
ty
:
TypeRef
,
needRef
:
Boolean
)
:
String
=
toObjcTypeDef
(
ty
.
resolved
,
needRef
)
def
toObjcTypeDef
(
tm
:
MExpr
)
:
String
=
toObjcTypeDef
(
tm
,
false
)
def
toObjcTypeDef
(
tm
:
MExpr
)
:
String
=
toObjcTypeDef
(
tm
,
false
)
...
...
src/source/ObjcMarshal.scala
View file @
6b17a860
...
@@ -16,6 +16,9 @@ class ObjcMarshal(spec: Spec) extends Marshal(spec) {
...
@@ -16,6 +16,9 @@ class ObjcMarshal(spec: Spec) extends Marshal(spec) {
override
def
fqTypename
(
tm
:
MExpr
)
:
String
=
typename
(
tm
)
override
def
fqTypename
(
tm
:
MExpr
)
:
String
=
typename
(
tm
)
def
fqTypename
(
name
:
String
,
ty
:
TypeDef
)
:
String
=
typename
(
name
,
ty
)
def
fqTypename
(
name
:
String
,
ty
:
TypeDef
)
:
String
=
typename
(
name
,
ty
)
override
def
paramType
(
tm
:
MExpr
)
:
String
=
toObjcParamType
(
tm
)
override
def
fqParamType
(
tm
:
MExpr
)
:
String
=
paramType
(
tm
)
// Return value: (Type_Name, Is_Class_Or_Not)
// Return value: (Type_Name, Is_Class_Or_Not)
def
toObjcType
(
ty
:
TypeRef
)
:
(
String
,
Boolean
)
=
toObjcType
(
ty
.
resolved
,
false
)
def
toObjcType
(
ty
:
TypeRef
)
:
(
String
,
Boolean
)
=
toObjcType
(
ty
.
resolved
,
false
)
def
toObjcType
(
ty
:
TypeRef
,
needRef
:
Boolean
)
:
(
String
,
Boolean
)
=
toObjcType
(
ty
.
resolved
,
needRef
)
def
toObjcType
(
ty
:
TypeRef
,
needRef
:
Boolean
)
:
(
String
,
Boolean
)
=
toObjcType
(
ty
.
resolved
,
needRef
)
...
@@ -46,7 +49,7 @@ class ObjcMarshal(spec: Spec) extends Marshal(spec) {
...
@@ -46,7 +49,7 @@ class ObjcMarshal(spec: Spec) extends Marshal(spec) {
case
DRecord
=>
(
idObjc
.
ty
(
d
.
name
),
true
)
case
DRecord
=>
(
idObjc
.
ty
(
d
.
name
),
true
)
case
DInterface
=>
case
DInterface
=>
val
ext
=
d
.
body
.
asInstanceOf
[
Interface
].
ext
val
ext
=
d
.
body
.
asInstanceOf
[
Interface
].
ext
(
idObjc
.
ty
(
d
.
name
),
fals
e
)
(
idObjc
.
ty
(
d
.
name
),
tru
e
)
}
}
case
p
:
MParam
=>
throw
new
AssertionError
(
"Parameter should not happen at Obj-C top level"
)
case
p
:
MParam
=>
throw
new
AssertionError
(
"Parameter should not happen at Obj-C top level"
)
}
}
...
@@ -56,4 +59,23 @@ class ObjcMarshal(spec: Spec) extends Marshal(spec) {
...
@@ -56,4 +59,23 @@ class ObjcMarshal(spec: Spec) extends Marshal(spec) {
f
(
tm
,
needRef
)
f
(
tm
,
needRef
)
}
}
def
toObjcParamType
(
tm
:
MExpr
)
:
String
=
{
val
(
name
,
needRef
)
=
toObjcType
(
tm
)
val
param
=
name
+
(
if
(
needRef
)
" *"
else
""
)
tm
.
base
match
{
case
d
:
MDef
=>
d
.
body
match
{
case
i
:
Interface
=>
if
(
i
.
ext
.
objc
)
s
"id<$name>"
else
param
case
_
=>
param
}
case
MOptional
=>
tm
.
args
.
head
.
base
match
{
case
d
:
MDef
=>
d
.
body
match
{
case
i
:
Interface
=>
if
(
i
.
ext
.
objc
)
s
"id<$name>"
else
param
case
_
=>
param
}
case
_
=>
param
}
case
_
=>
param
}
}
}
}
src/source/ObjcppGenerator.scala
View file @
6b17a860
...
@@ -193,12 +193,12 @@ class ObjcppGenerator(spec: Spec) extends Generator(spec) {
...
@@ -193,12 +193,12 @@ class ObjcppGenerator(spec: Spec) extends Generator(spec) {
def
writeObjcFuncDecl
(
method
:
Interface.Method
,
w
:
IndentWriter
)
{
def
writeObjcFuncDecl
(
method
:
Interface.Method
,
w
:
IndentWriter
)
{
val
label
=
if
(
method
.
static
)
"+"
else
"-"
val
label
=
if
(
method
.
static
)
"+"
else
"-"
val
ret
=
method
.
ret
.
fold
(
"void"
)(
toObjcFullType
(
_
)
)
val
ret
=
method
.
ret
.
fold
(
"void"
)(
objcMarshal
.
paramType
)
w
.
w
(
s
"$label ($ret)${idObjc.method(method.ident)}"
)
w
.
w
(
s
"$label ($ret)${idObjc.method(method.ident)}"
)
val
skipFirst
=
SkipFirst
()
val
skipFirst
=
SkipFirst
()
for
(
p
<-
method
.
params
)
{
for
(
p
<-
method
.
params
)
{
skipFirst
{
w
.
w
(
s
" ${idObjc.local(p.ident)}"
)
}
skipFirst
{
w
.
w
(
s
" ${idObjc.local(p.ident)}"
)
}
w
.
w
(
s
":(${
toObjcFull
Type(p.ty)})${idObjc.local(p.ident)}"
)
w
.
w
(
s
":(${
objcMarshal.param
Type(p.ty)})${idObjc.local(p.ident)}"
)
}
}
}
}
...
@@ -294,7 +294,7 @@ class ObjcppGenerator(spec: Spec) extends Generator(spec) {
...
@@ -294,7 +294,7 @@ class ObjcppGenerator(spec: Spec) extends Generator(spec) {
w
.
wl
(
s
"static std::shared_ptr<$cppSelf> ${idCpp.method(ident.name + "
_with_objc
")} (id<$self> objcRef);"
)
w
.
wl
(
s
"static std::shared_ptr<$cppSelf> ${idCpp.method(ident.name + "
_with_objc
")} (id<$self> objcRef);"
)
for
(
m
<-
i
.
methods
)
{
for
(
m
<-
i
.
methods
)
{
val
ret
=
m
.
ret
.
fold
(
"void"
)(
cppMarshal
.
fqTypename
)
val
ret
=
m
.
ret
.
fold
(
"void"
)(
cppMarshal
.
fqTypename
)
val
params
=
m
.
params
.
map
(
p
=>
toCppParamType
(
p
,
spec
.
cppNamespace
))
val
params
=
m
.
params
.
map
(
p
=>
cppMarshal
.
fqParamType
(
p
.
ty
)
+
" "
+
idCpp
.
local
(
p
.
ident
))
w
.
wl
(
s
"virtual $ret ${idCpp.method(m.ident)} ${params.mkString("
(
", "
,
", "
)
")} override;"
)
w
.
wl
(
s
"virtual $ret ${idCpp.method(m.ident)} ${params.mkString("
(
", "
,
", "
)
")} override;"
)
}
}
}
}
...
@@ -318,7 +318,7 @@ class ObjcppGenerator(spec: Spec) extends Generator(spec) {
...
@@ -318,7 +318,7 @@ class ObjcppGenerator(spec: Spec) extends Generator(spec) {
for
(
m
<-
i
.
methods
)
{
for
(
m
<-
i
.
methods
)
{
w
.
wl
w
.
wl
val
ret
=
m
.
ret
.
fold
(
"void"
)(
cppMarshal
.
fqTypename
)
val
ret
=
m
.
ret
.
fold
(
"void"
)(
cppMarshal
.
fqTypename
)
val
params
=
m
.
params
.
map
(
p
=>
toCppParamType
(
p
,
spec
.
cppNamespace
))
val
params
=
m
.
params
.
map
(
p
=>
cppMarshal
.
fqParamType
(
p
.
ty
)
+
" "
+
idCpp
.
local
(
p
.
ident
))
w
.
wl
(
s
"$ret $objcExtSelf::${idCpp.method(m.ident)} ${params.mkString("
(
", "
,
", "
)
")}"
).
braced
{
w
.
wl
(
s
"$ret $objcExtSelf::${idCpp.method(m.ident)} ${params.mkString("
(
", "
,
", "
)
")}"
).
braced
{
w
.
w
(
"@autoreleasepool"
).
braced
{
w
.
w
(
"@autoreleasepool"
).
braced
{
m
.
params
.
foreach
(
p
=>
m
.
params
.
foreach
(
p
=>
...
@@ -410,9 +410,9 @@ class ObjcppGenerator(spec: Spec) extends Generator(spec) {
...
@@ -410,9 +410,9 @@ class ObjcppGenerator(spec: Spec) extends Generator(spec) {
if
(!
r
.
fields
.
isEmpty
)
{
if
(!
r
.
fields
.
isEmpty
)
{
val
head
=
r
.
fields
.
head
val
head
=
r
.
fields
.
head
val
skipFirst
=
SkipFirst
()
val
skipFirst
=
SkipFirst
()
w
.
w
(
s
"- (id)${idObjc.method("
init_with_
" + head.ident.name)}:(${
toObjcFull
Type(head.ty)})${idObjc.field(head.ident)}"
)
w
.
w
(
s
"- (id)${idObjc.method("
init_with_
" + head.ident.name)}:(${
objcMarshal.param
Type(head.ty)})${idObjc.field(head.ident)}"
)
for
(
f
<-
r
.
fields
)
skipFirst
{
for
(
f
<-
r
.
fields
)
skipFirst
{
w
.
w
(
s
" ${idObjc.field(f.ident.name)}:(${
toObjcFull
Type(f.ty)})${idObjc.local(f.ident)}"
)
w
.
w
(
s
" ${idObjc.field(f.ident.name)}:(${
objcMarshal.param
Type(f.ty)})${idObjc.local(f.ident)}"
)
}
}
w
.
wl
w
.
wl
w
.
braced
{
w
.
braced
{
...
@@ -728,7 +728,7 @@ class ObjcppGenerator(spec: Spec) extends Generator(spec) {
...
@@ -728,7 +728,7 @@ class ObjcppGenerator(spec: Spec) extends Generator(spec) {
case
DRecord
=>
w
.
wl
(
s
"$objcType$objcIdent = [[${self} alloc] initWithCpp${IdentStyle.camelUpper(typeName)}:$cppIdent];"
)
case
DRecord
=>
w
.
wl
(
s
"$objcType$objcIdent = [[${self} alloc] initWithCpp${IdentStyle.camelUpper(typeName)}:$cppIdent];"
)
case
DInterface
=>
case
DInterface
=>
val
ext
=
d
.
body
.
asInstanceOf
[
Interface
].
ext
val
ext
=
d
.
body
.
asInstanceOf
[
Interface
].
ext
val
objcProxy
=
withNs
(
Some
(
spec
.
objcppNamespace
),
idCpp
.
ty
(
d
.
name
+
"_objc_proxy"
)
)
val
objcProxy
=
objcppMarshal
.
fqHelperClass
(
d
.
name
+
"_objc_proxy"
)
(
ext
.
cpp
,
ext
.
objc
)
match
{
(
ext
.
cpp
,
ext
.
objc
)
match
{
case
(
true
,
true
)
=>
throw
new
AssertionError
(
"Function implemented on both sides"
)
case
(
true
,
true
)
=>
throw
new
AssertionError
(
"Function implemented on both sides"
)
case
(
false
,
false
)
=>
throw
new
AssertionError
(
"Function not implemented"
)
case
(
false
,
false
)
=>
throw
new
AssertionError
(
"Function not implemented"
)
...
@@ -829,7 +829,7 @@ class ObjcppGenerator(spec: Spec) extends Generator(spec) {
...
@@ -829,7 +829,7 @@ class ObjcppGenerator(spec: Spec) extends Generator(spec) {
case
(
true
,
true
)
=>
throw
new
AssertionError
(
"Function implemented on both sides"
)
case
(
true
,
true
)
=>
throw
new
AssertionError
(
"Function implemented on both sides"
)
case
(
false
,
false
)
=>
throw
new
AssertionError
(
"Function not implemented"
)
case
(
false
,
false
)
=>
throw
new
AssertionError
(
"Function not implemented"
)
case
(
true
,
false
)
=>
w
.
wl
(
s
"$cppType $cppIdent = $objcIdent.cppRef;"
)
case
(
true
,
false
)
=>
w
.
wl
(
s
"$cppType $cppIdent = $objcIdent.cppRef;"
)
case
(
false
,
true
)
=>
w
.
wl
(
s
"$cppType $cppIdent = ${
withNs(Some(spec.objcppNamespace), idCpp.ty(d.name + "
_objc_proxy
")
)}"
+
case
(
false
,
true
)
=>
w
.
wl
(
s
"$cppType $cppIdent = ${
objcppMarshal.fqHelperClass(d.name + "
_objc_proxy
"
)}"
+
s
"::${idCpp.method(d.name + "
_with_objc
")}($objcIdent);"
)
s
"::${idCpp.method(d.name + "
_with_objc
")}($objcIdent);"
)
}
}
}
}
...
@@ -881,14 +881,6 @@ class ObjcppGenerator(spec: Spec) extends Generator(spec) {
...
@@ -881,14 +881,6 @@ class ObjcppGenerator(spec: Spec) extends Generator(spec) {
f
(
tm
,
needRef
)
f
(
tm
,
needRef
)
}
}
def
toObjcFullType
(
ty
:
TypeRef
)
:
String
=
toObjcFullType
(
ty
.
resolved
,
false
)
def
toObjcFullType
(
ty
:
TypeRef
,
needRef
:
Boolean
)
:
String
=
toObjcFullType
(
ty
.
resolved
,
needRef
)
def
toObjcFullType
(
tm
:
MExpr
)
:
String
=
toObjcFullType
(
tm
,
false
)
def
toObjcFullType
(
tm
:
MExpr
,
needRef
:
Boolean
=
false
)
:
String
=
{
val
(
name
,
asterisk
)
=
toObjcType
(
tm
,
needRef
)
name
+
(
if
(
asterisk
)
" *"
else
""
)
}
def
toObjcTypeDef
(
ty
:
TypeRef
)
:
String
=
toObjcTypeDef
(
ty
.
resolved
,
false
)
def
toObjcTypeDef
(
ty
:
TypeRef
)
:
String
=
toObjcTypeDef
(
ty
.
resolved
,
false
)
def
toObjcTypeDef
(
ty
:
TypeRef
,
needRef
:
Boolean
)
:
String
=
toObjcTypeDef
(
ty
.
resolved
,
needRef
)
def
toObjcTypeDef
(
ty
:
TypeRef
,
needRef
:
Boolean
)
:
String
=
toObjcTypeDef
(
ty
.
resolved
,
needRef
)
def
toObjcTypeDef
(
tm
:
MExpr
)
:
String
=
toObjcTypeDef
(
tm
,
false
)
def
toObjcTypeDef
(
tm
:
MExpr
)
:
String
=
toObjcTypeDef
(
tm
,
false
)
...
...
src/source/ObjcppMarshal.scala
View file @
6b17a860
...
@@ -6,11 +6,14 @@ import djinni.meta._
...
@@ -6,11 +6,14 @@ import djinni.meta._
class
ObjcppMarshal
(
spec
:
Spec
)
extends
Marshal
(
spec
)
{
class
ObjcppMarshal
(
spec
:
Spec
)
extends
Marshal
(
spec
)
{
override
def
typename
(
tm
:
MExpr
)
:
String
=
throw
new
AssertionError
(
"
Objcpp has no public types
"
)
override
def
typename
(
tm
:
MExpr
)
:
String
=
throw
new
AssertionError
(
"
not applicable
"
)
def
typename
(
name
:
String
,
ty
:
TypeDef
)
:
String
=
throw
new
AssertionError
(
"
Objcpp has no public types
"
)
def
typename
(
name
:
String
,
ty
:
TypeDef
)
:
String
=
throw
new
AssertionError
(
"
not applicable
"
)
override
def
fqTypename
(
tm
:
MExpr
)
:
String
=
throw
new
AssertionError
(
"Objcpp has no public types"
)
override
def
fqTypename
(
tm
:
MExpr
)
:
String
=
throw
new
AssertionError
(
"not applicable"
)
def
fqTypename
(
name
:
String
,
ty
:
TypeDef
)
:
String
=
throw
new
AssertionError
(
"Objcpp has no public types"
)
def
fqTypename
(
name
:
String
,
ty
:
TypeDef
)
:
String
=
throw
new
AssertionError
(
"not applicable"
)
def
paramType
(
tm
:
MExpr
)
:
String
=
throw
new
AssertionError
(
"not applicable"
)
def
fqParamType
(
tm
:
MExpr
)
:
String
=
throw
new
AssertionError
(
"not applicable"
)
// Name for the autogenerated proxy class wrapping +o interfaces
// Name for the autogenerated proxy class wrapping +o interfaces
def
helperClass
(
name
:
String
)
=
idCpp
.
ty
(
name
)
def
helperClass
(
name
:
String
)
=
idCpp
.
ty
(
name
)
...
...
src/source/generator.scala
View file @
6b17a860
...
@@ -281,57 +281,8 @@ abstract class Generator(spec: Spec)
...
@@ -281,57 +281,8 @@ abstract class Generator(spec: Spec)
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
// Render type expression
// Render type expression
private
def
toCppType
(
ty
:
TypeRef
,
namespace
:
Option
[
String
]
=
None
)
:
String
=
toCppType
(
ty
.
resolved
,
namespace
)
private
def
toCppType
(
tm
:
MExpr
,
namespace
:
Option
[
String
])
:
String
=
{
def
base
(
m
:
Meta
)
:
String
=
m
match
{
case
p
:
MPrimitive
=>
p
.
cName
case
MString
=>
"std::string"
case
MDate
=>
"std::chrono::system_clock::time_point"
case
MBinary
=>
"std::vector<uint8_t>"
case
MOptional
=>
spec
.
cppOptionalTemplate
case
MList
=>
"std::vector"
case
MSet
=>
"std::unordered_set"
case
MMap
=>
"std::unordered_map"
case
d
:
MDef
=>
d
.
defType
match
{
case
DEnum
=>
withNs
(
namespace
,
idCpp
.
enumType
(
d
.
name
))
case
DRecord
=>
withNs
(
namespace
,
idCpp
.
ty
(
d
.
name
))
case
DInterface
=>
s
"std::shared_ptr<${withNs(namespace, idCpp.ty(d.name))}>"
}
case
p
:
MParam
=>
idCpp
.
typeParam
(
p
.
name
)
}
def
expr
(
tm
:
MExpr
)
:
String
=
{
val
args
=
if
(
tm
.
args
.
isEmpty
)
""
else
tm
.
args
.
map
(
expr
).
mkString
(
"<"
,
", "
,
">"
)
base
(
tm
.
base
)
+
args
}
expr
(
tm
)
}
// this can be used in c++ generation to know whether a const& should be applied to the parameter or not
def
toCppParamType
(
f
:
Field
)
:
String
=
toCppParamType
(
f
,
None
,
""
)
def
toCppParamType
(
f
:
Field
,
namespace
:
Option
[
String
]
=
None
,
prefix
:
String
=
""
)
:
String
=
{
val
cppType
=
toCppType
(
f
.
ty
,
namespace
)
val
localName
=
prefix
+
idCpp
.
local
(
f
.
ident
);
val
refType
=
"const "
+
cppType
+
" & "
+
localName
val
valueType
=
cppType
+
" "
+
localName
def
toType
(
expr
:
MExpr
)
:
String
=
expr
.
base
match
{
case
MPrimitive
(
_
,
_
,
_
,
_
,
_
,
_
,
_
,
_
)
=>
valueType
case
MDate
=>
valueType
case
d
:
MDef
=>
d
.
defType
match
{
case
DEnum
=>
valueType
case
_
=>
refType
}
case
MOptional
=>
toType
(
expr
.
args
.
head
)
case
_
=>
refType
}
toType
(
f
.
ty
.
resolved
)
}
def
withNs
(
namespace
:
Option
[
String
],
t
:
String
)
=
namespace
.
fold
(
t
)(
"::"
+
_
+
"::"
+
t
)
def
withNs
(
namespace
:
Option
[
String
],
t
:
String
)
=
namespace
.
fold
(
t
)(
"::"
+
_
+
"::"
+
t
)
def
withPackage
(
packageName
:
Option
[
String
],
t
:
String
)
=
packageName
.
fold
(
t
)(
_
+
"."
+
t
)
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
def
writeDoc
(
w
:
IndentWriter
,
doc
:
Doc
)
{
def
writeDoc
(
w
:
IndentWriter
,
doc
:
Doc
)
{
...
...
test-suite/generated-src/jni/NativeCppException.cpp
View file @
6b17a860
...
@@ -28,7 +28,7 @@ CJNIEXPORT jint JNICALL Java_com_dropbox_djinni_test_CppException_00024CppProxy_
...
@@ -28,7 +28,7 @@ CJNIEXPORT jint JNICALL Java_com_dropbox_djinni_test_CppException_00024CppProxy_
int32_t
cr
=
ref
->
throw_an_exception
();
int32_t
cr
=
ref
->
throw_an_exception
();
return
::
djinni
::
HI32
::
Unboxed
::
toJava
(
jniEnv
,
cr
);
return
::
djinni
::
HI32
::
Unboxed
::
toJava
(
jniEnv
,
cr
);
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
0
/* value doesn't matter*/
)
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
0
/* value doesn't matter
*/
)
}
}
CJNIEXPORT
jobject
JNICALL
Java_com_dropbox_djinni_test_CppException_get
(
JNIEnv
*
jniEnv
,
jobject
/*this*/
)
CJNIEXPORT
jobject
JNICALL
Java_com_dropbox_djinni_test_CppException_get
(
JNIEnv
*
jniEnv
,
jobject
/*this*/
)
...
@@ -39,7 +39,7 @@ CJNIEXPORT jobject JNICALL Java_com_dropbox_djinni_test_CppException_get(JNIEnv*
...
@@ -39,7 +39,7 @@ CJNIEXPORT jobject JNICALL Java_com_dropbox_djinni_test_CppException_get(JNIEnv*
std
::
shared_ptr
<
CppException
>
cr
=
CppException
::
get
();
std
::
shared_ptr
<
CppException
>
cr
=
CppException
::
get
();
return
NativeCppException
::
toJava
(
jniEnv
,
cr
);
return
NativeCppException
::
toJava
(
jniEnv
,
cr
);
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
0
/* value doesn't matter */
)
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
0
/* value doesn't matter */
)
}
}
}
// namespace djinni_generated
}
// namespace djinni_generated
test-suite/generated-src/jni/NativeTestHelpers.cpp
View file @
6b17a860
...
@@ -39,7 +39,7 @@ CJNIEXPORT jobject JNICALL Java_com_dropbox_djinni_test_TestHelpers_getSetRecord
...
@@ -39,7 +39,7 @@ CJNIEXPORT jobject JNICALL Java_com_dropbox_djinni_test_TestHelpers_getSetRecord
SetRecord
cr
=
TestHelpers
::
get_set_record
();
SetRecord
cr
=
TestHelpers
::
get_set_record
();
return
NativeSetRecord
::
toJava
(
jniEnv
,
cr
);
return
NativeSetRecord
::
toJava
(
jniEnv
,
cr
);
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
0
/* value doesn't matter */
)
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
0
/* value doesn't matter */
)
}
}
CJNIEXPORT
jboolean
JNICALL
Java_com_dropbox_djinni_test_TestHelpers_checkSetRecord
(
JNIEnv
*
jniEnv
,
jobject
/*this*/
,
jobject
j_rec
)
CJNIEXPORT
jboolean
JNICALL
Java_com_dropbox_djinni_test_TestHelpers_checkSetRecord
(
JNIEnv
*
jniEnv
,
jobject
/*this*/
,
jobject
j_rec
)
...
@@ -51,7 +51,7 @@ CJNIEXPORT jboolean JNICALL Java_com_dropbox_djinni_test_TestHelpers_checkSetRec
...
@@ -51,7 +51,7 @@ CJNIEXPORT jboolean JNICALL Java_com_dropbox_djinni_test_TestHelpers_checkSetRec
bool
cr
=
TestHelpers
::
check_set_record
(
c_rec
);
bool
cr
=
TestHelpers
::
check_set_record
(
c_rec
);
return
::
djinni
::
HBool
::
Unboxed
::
toJava
(
jniEnv
,
cr
);
return
::
djinni
::
HBool
::
Unboxed
::
toJava
(
jniEnv
,
cr
);
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
0
/* value doesn't matter */
)
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
0
/* value doesn't matter */
)
}
}
CJNIEXPORT
jobject
JNICALL
Java_com_dropbox_djinni_test_TestHelpers_getPrimitiveList
(
JNIEnv
*
jniEnv
,
jobject
/*this*/
)
CJNIEXPORT
jobject
JNICALL
Java_com_dropbox_djinni_test_TestHelpers_getPrimitiveList
(
JNIEnv
*
jniEnv
,
jobject
/*this*/
)
...
@@ -62,7 +62,7 @@ CJNIEXPORT jobject JNICALL Java_com_dropbox_djinni_test_TestHelpers_getPrimitive
...
@@ -62,7 +62,7 @@ CJNIEXPORT jobject JNICALL Java_com_dropbox_djinni_test_TestHelpers_getPrimitive
PrimitiveList
cr
=
TestHelpers
::
get_primitive_list
();
PrimitiveList
cr
=
TestHelpers
::
get_primitive_list
();
return
NativePrimitiveList
::
toJava
(
jniEnv
,
cr
);
return
NativePrimitiveList
::
toJava
(
jniEnv
,
cr
);
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
0
/* value doesn't matter */
)
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
0
/* value doesn't matter */
)
}
}
CJNIEXPORT
jboolean
JNICALL
Java_com_dropbox_djinni_test_TestHelpers_checkPrimitiveList
(
JNIEnv
*
jniEnv
,
jobject
/*this*/
,
jobject
j_pl
)
CJNIEXPORT
jboolean
JNICALL
Java_com_dropbox_djinni_test_TestHelpers_checkPrimitiveList
(
JNIEnv
*
jniEnv
,
jobject
/*this*/
,
jobject
j_pl
)
...
@@ -74,7 +74,7 @@ CJNIEXPORT jboolean JNICALL Java_com_dropbox_djinni_test_TestHelpers_checkPrimit
...
@@ -74,7 +74,7 @@ CJNIEXPORT jboolean JNICALL Java_com_dropbox_djinni_test_TestHelpers_checkPrimit
bool
cr
=
TestHelpers
::
check_primitive_list
(
c_pl
);
bool
cr
=
TestHelpers
::
check_primitive_list
(
c_pl
);
return
::
djinni
::
HBool
::
Unboxed
::
toJava
(
jniEnv
,
cr
);
return
::
djinni
::
HBool
::
Unboxed
::
toJava
(
jniEnv
,
cr
);
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
0
/* value doesn't matter */
)
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
0
/* value doesn't matter */
)
}
}
CJNIEXPORT
jobject
JNICALL
Java_com_dropbox_djinni_test_TestHelpers_getNestedCollection
(
JNIEnv
*
jniEnv
,
jobject
/*this*/
)
CJNIEXPORT
jobject
JNICALL
Java_com_dropbox_djinni_test_TestHelpers_getNestedCollection
(
JNIEnv
*
jniEnv
,
jobject
/*this*/
)
...
@@ -85,7 +85,7 @@ CJNIEXPORT jobject JNICALL Java_com_dropbox_djinni_test_TestHelpers_getNestedCol
...
@@ -85,7 +85,7 @@ CJNIEXPORT jobject JNICALL Java_com_dropbox_djinni_test_TestHelpers_getNestedCol
NestedCollection
cr
=
TestHelpers
::
get_nested_collection
();
NestedCollection
cr
=
TestHelpers
::
get_nested_collection
();
return
NativeNestedCollection
::
toJava
(
jniEnv
,
cr
);
return
NativeNestedCollection
::
toJava
(
jniEnv
,
cr
);
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
0
/* value doesn't matter */
)
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
0
/* value doesn't matter */
)
}
}
CJNIEXPORT
jboolean
JNICALL
Java_com_dropbox_djinni_test_TestHelpers_checkNestedCollection
(
JNIEnv
*
jniEnv
,
jobject
/*this*/
,
jobject
j_nc
)
CJNIEXPORT
jboolean
JNICALL
Java_com_dropbox_djinni_test_TestHelpers_checkNestedCollection
(
JNIEnv
*
jniEnv
,
jobject
/*this*/
,
jobject
j_nc
)
...
@@ -97,7 +97,7 @@ CJNIEXPORT jboolean JNICALL Java_com_dropbox_djinni_test_TestHelpers_checkNested
...
@@ -97,7 +97,7 @@ CJNIEXPORT jboolean JNICALL Java_com_dropbox_djinni_test_TestHelpers_checkNested
bool
cr
=
TestHelpers
::
check_nested_collection
(
c_nc
);
bool
cr
=
TestHelpers
::
check_nested_collection
(
c_nc
);
return
::
djinni
::
HBool
::
Unboxed
::
toJava
(
jniEnv
,
cr
);
return
::
djinni
::
HBool
::
Unboxed
::
toJava
(
jniEnv
,
cr
);
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
0
/* value doesn't matter */
)
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
0
/* value doesn't matter */
)
}
}
CJNIEXPORT
jobject
JNICALL
Java_com_dropbox_djinni_test_TestHelpers_getMap
(
JNIEnv
*
jniEnv
,
jobject
/*this*/
)
CJNIEXPORT
jobject
JNICALL
Java_com_dropbox_djinni_test_TestHelpers_getMap
(
JNIEnv
*
jniEnv
,
jobject
/*this*/
)
...
@@ -108,7 +108,7 @@ CJNIEXPORT jobject JNICALL Java_com_dropbox_djinni_test_TestHelpers_getMap(JNIEn
...
@@ -108,7 +108,7 @@ CJNIEXPORT jobject JNICALL Java_com_dropbox_djinni_test_TestHelpers_getMap(JNIEn
std
::
unordered_map
<
std
::
string
,
int64_t
>
cr
=
TestHelpers
::
get_map
();
std
::
unordered_map
<
std
::
string
,
int64_t
>
cr
=
TestHelpers
::
get_map
();
return
::
djinni
::
HMap
<::
djinni
::
HString
,
::
djinni
::
HI64
>::
toJava
(
jniEnv
,
cr
);
return
::
djinni
::
HMap
<::
djinni
::
HString
,
::
djinni
::
HI64
>::
toJava
(
jniEnv
,
cr
);
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
0
/* value doesn't matter */
)
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
0
/* value doesn't matter */
)
}
}
CJNIEXPORT
jboolean
JNICALL
Java_com_dropbox_djinni_test_TestHelpers_checkMap
(
JNIEnv
*
jniEnv
,
jobject
/*this*/
,
jobject
j_m
)
CJNIEXPORT
jboolean
JNICALL
Java_com_dropbox_djinni_test_TestHelpers_checkMap
(
JNIEnv
*
jniEnv
,
jobject
/*this*/
,
jobject
j_m
)
...
@@ -120,7 +120,7 @@ CJNIEXPORT jboolean JNICALL Java_com_dropbox_djinni_test_TestHelpers_checkMap(JN
...
@@ -120,7 +120,7 @@ CJNIEXPORT jboolean JNICALL Java_com_dropbox_djinni_test_TestHelpers_checkMap(JN
bool
cr
=
TestHelpers
::
check_map
(
c_m
);
bool
cr
=
TestHelpers
::
check_map
(
c_m
);
return
::
djinni
::
HBool
::
Unboxed
::
toJava
(
jniEnv
,
cr
);
return
::
djinni
::
HBool
::
Unboxed
::
toJava
(
jniEnv
,
cr
);
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
0
/* value doesn't matter */
)
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
0
/* value doesn't matter */
)
}
}
CJNIEXPORT
jobject
JNICALL
Java_com_dropbox_djinni_test_TestHelpers_getEmptyMap
(
JNIEnv
*
jniEnv
,
jobject
/*this*/
)
CJNIEXPORT
jobject
JNICALL
Java_com_dropbox_djinni_test_TestHelpers_getEmptyMap
(
JNIEnv
*
jniEnv
,
jobject
/*this*/
)
...
@@ -131,7 +131,7 @@ CJNIEXPORT jobject JNICALL Java_com_dropbox_djinni_test_TestHelpers_getEmptyMap(
...
@@ -131,7 +131,7 @@ CJNIEXPORT jobject JNICALL Java_com_dropbox_djinni_test_TestHelpers_getEmptyMap(
std
::
unordered_map
<
std
::
string
,
int64_t
>
cr
=
TestHelpers
::
get_empty_map
();
std
::
unordered_map
<
std
::
string
,
int64_t
>
cr
=
TestHelpers
::
get_empty_map
();
return
::
djinni
::
HMap
<::
djinni
::
HString
,
::
djinni
::
HI64
>::
toJava
(
jniEnv
,
cr
);
return
::
djinni
::
HMap
<::
djinni
::
HString
,
::
djinni
::
HI64
>::
toJava
(
jniEnv
,
cr
);
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
0
/* value doesn't matter */
)
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
0
/* value doesn't matter */
)
}
}
CJNIEXPORT
jboolean
JNICALL
Java_com_dropbox_djinni_test_TestHelpers_checkEmptyMap
(
JNIEnv
*
jniEnv
,
jobject
/*this*/
,
jobject
j_m
)
CJNIEXPORT
jboolean
JNICALL
Java_com_dropbox_djinni_test_TestHelpers_checkEmptyMap
(
JNIEnv
*
jniEnv
,
jobject
/*this*/
,
jobject
j_m
)
...
@@ -143,7 +143,7 @@ CJNIEXPORT jboolean JNICALL Java_com_dropbox_djinni_test_TestHelpers_checkEmptyM
...
@@ -143,7 +143,7 @@ CJNIEXPORT jboolean JNICALL Java_com_dropbox_djinni_test_TestHelpers_checkEmptyM
bool
cr
=
TestHelpers
::
check_empty_map
(
c_m
);
bool
cr
=
TestHelpers
::
check_empty_map
(
c_m
);
return
::
djinni
::
HBool
::
Unboxed
::
toJava
(
jniEnv
,
cr
);
return
::
djinni
::
HBool
::
Unboxed
::
toJava
(
jniEnv
,
cr
);
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
0
/* value doesn't matter */
)
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
0
/* value doesn't matter */
)
}
}
CJNIEXPORT
jobject
JNICALL
Java_com_dropbox_djinni_test_TestHelpers_getMapListRecord
(
JNIEnv
*
jniEnv
,
jobject
/*this*/
)
CJNIEXPORT
jobject
JNICALL
Java_com_dropbox_djinni_test_TestHelpers_getMapListRecord
(
JNIEnv
*
jniEnv
,
jobject
/*this*/
)
...
@@ -154,7 +154,7 @@ CJNIEXPORT jobject JNICALL Java_com_dropbox_djinni_test_TestHelpers_getMapListRe
...
@@ -154,7 +154,7 @@ CJNIEXPORT jobject JNICALL Java_com_dropbox_djinni_test_TestHelpers_getMapListRe
MapListRecord
cr
=
TestHelpers
::
get_map_list_record
();
MapListRecord
cr
=
TestHelpers
::
get_map_list_record
();
return
NativeMapListRecord
::
toJava
(
jniEnv
,
cr
);
return
NativeMapListRecord
::
toJava
(
jniEnv
,
cr
);
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
0
/* value doesn't matter */
)
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
0
/* value doesn't matter */
)
}
}
CJNIEXPORT
jboolean
JNICALL
Java_com_dropbox_djinni_test_TestHelpers_checkMapListRecord
(
JNIEnv
*
jniEnv
,
jobject
/*this*/
,
jobject
j_m
)
CJNIEXPORT
jboolean
JNICALL
Java_com_dropbox_djinni_test_TestHelpers_checkMapListRecord
(
JNIEnv
*
jniEnv
,
jobject
/*this*/
,
jobject
j_m
)
...
@@ -166,7 +166,7 @@ CJNIEXPORT jboolean JNICALL Java_com_dropbox_djinni_test_TestHelpers_checkMapLis
...
@@ -166,7 +166,7 @@ CJNIEXPORT jboolean JNICALL Java_com_dropbox_djinni_test_TestHelpers_checkMapLis
bool
cr
=
TestHelpers
::
check_map_list_record
(
c_m
);
bool
cr
=
TestHelpers
::
check_map_list_record
(
c_m
);
return
::
djinni
::
HBool
::
Unboxed
::
toJava
(
jniEnv
,
cr
);
return
::
djinni
::
HBool
::
Unboxed
::
toJava
(
jniEnv
,
cr
);
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
0
/* value doesn't matter */
)
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
0
/* value doesn't matter */
)
}
}
CJNIEXPORT
void
JNICALL
Java_com_dropbox_djinni_test_TestHelpers_checkClientInterfaceAscii
(
JNIEnv
*
jniEnv
,
jobject
/*this*/
,
jobject
j_i
)
CJNIEXPORT
void
JNICALL
Java_com_dropbox_djinni_test_TestHelpers_checkClientInterfaceAscii
(
JNIEnv
*
jniEnv
,
jobject
/*this*/
,
jobject
j_i
)
...
@@ -208,7 +208,7 @@ CJNIEXPORT jobject JNICALL Java_com_dropbox_djinni_test_TestHelpers_tokenId(JNIE
...
@@ -208,7 +208,7 @@ CJNIEXPORT jobject JNICALL Java_com_dropbox_djinni_test_TestHelpers_tokenId(JNIE
std
::
shared_ptr
<
Token
>
cr
=
TestHelpers
::
token_id
(
c_t
);
std
::
shared_ptr
<
Token
>
cr
=
TestHelpers
::
token_id
(
c_t
);
return
NativeToken
::
toJava
(
jniEnv
,
cr
);
return
NativeToken
::
toJava
(
jniEnv
,
cr
);
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
0
/* value doesn't matter */
)
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
0
/* value doesn't matter */
)
}
}
CJNIEXPORT
jobject
JNICALL
Java_com_dropbox_djinni_test_TestHelpers_createCppToken
(
JNIEnv
*
jniEnv
,
jobject
/*this*/
)
CJNIEXPORT
jobject
JNICALL
Java_com_dropbox_djinni_test_TestHelpers_createCppToken
(
JNIEnv
*
jniEnv
,
jobject
/*this*/
)
...
@@ -219,7 +219,7 @@ CJNIEXPORT jobject JNICALL Java_com_dropbox_djinni_test_TestHelpers_createCppTok
...
@@ -219,7 +219,7 @@ CJNIEXPORT jobject JNICALL Java_com_dropbox_djinni_test_TestHelpers_createCppTok
std
::
shared_ptr
<
Token
>
cr
=
TestHelpers
::
create_cpp_token
();
std
::
shared_ptr
<
Token
>
cr
=
TestHelpers
::
create_cpp_token
();
return
NativeToken
::
toJava
(
jniEnv
,
cr
);
return
NativeToken
::
toJava
(
jniEnv
,
cr
);
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
0
/* value doesn't matter */
)
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
0
/* value doesn't matter */
)
}
}
CJNIEXPORT
void
JNICALL
Java_com_dropbox_djinni_test_TestHelpers_checkCppToken
(
JNIEnv
*
jniEnv
,
jobject
/*this*/
,
jobject
j_t
)
CJNIEXPORT
void
JNICALL
Java_com_dropbox_djinni_test_TestHelpers_checkCppToken
(
JNIEnv
*
jniEnv
,
jobject
/*this*/
,
jobject
j_t
)
...
@@ -241,7 +241,7 @@ CJNIEXPORT jlong JNICALL Java_com_dropbox_djinni_test_TestHelpers_cppTokenId(JNI
...
@@ -241,7 +241,7 @@ CJNIEXPORT jlong JNICALL Java_com_dropbox_djinni_test_TestHelpers_cppTokenId(JNI
int64_t
cr
=
TestHelpers
::
cpp_token_id
(
c_t
);
int64_t
cr
=
TestHelpers
::
cpp_token_id
(
c_t
);
return
::
djinni
::
HI64
::
Unboxed
::
toJava
(
jniEnv
,
cr
);
return
::
djinni
::
HI64
::
Unboxed
::
toJava
(
jniEnv
,
cr
);
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
0
/* value doesn't matter */
)
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
0
/* value doesn't matter */
)
}
}
CJNIEXPORT
jobject
JNICALL
Java_com_dropbox_djinni_test_TestHelpers_returnNone
(
JNIEnv
*
jniEnv
,
jobject
/*this*/
)
CJNIEXPORT
jobject
JNICALL
Java_com_dropbox_djinni_test_TestHelpers_returnNone
(
JNIEnv
*
jniEnv
,
jobject
/*this*/
)
...
@@ -252,7 +252,7 @@ CJNIEXPORT jobject JNICALL Java_com_dropbox_djinni_test_TestHelpers_returnNone(J
...
@@ -252,7 +252,7 @@ CJNIEXPORT jobject JNICALL Java_com_dropbox_djinni_test_TestHelpers_returnNone(J
std
::
experimental
::
optional
<
int32_t
>
cr
=
TestHelpers
::
return_none
();
std
::
experimental
::
optional
<
int32_t
>
cr
=
TestHelpers
::
return_none
();
return
::
djinni
::
HOptional
<
std
::
experimental
::
optional
,
::
djinni
::
HI32
>::
toJava
(
jniEnv
,
cr
);
return
::
djinni
::
HOptional
<
std
::
experimental
::
optional
,
::
djinni
::
HI32
>::
toJava
(
jniEnv
,
cr
);
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
0
/* value doesn't matter */
)
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
0
/* value doesn't matter */
)
}
}
CJNIEXPORT
jobject
JNICALL
Java_com_dropbox_djinni_test_TestHelpers_assortedIntegersId
(
JNIEnv
*
jniEnv
,
jobject
/*this*/
,
jobject
j_i
)
CJNIEXPORT
jobject
JNICALL
Java_com_dropbox_djinni_test_TestHelpers_assortedIntegersId
(
JNIEnv
*
jniEnv
,
jobject
/*this*/
,
jobject
j_i
)
...
@@ -264,7 +264,7 @@ CJNIEXPORT jobject JNICALL Java_com_dropbox_djinni_test_TestHelpers_assortedInte
...
@@ -264,7 +264,7 @@ CJNIEXPORT jobject JNICALL Java_com_dropbox_djinni_test_TestHelpers_assortedInte
AssortedIntegers
cr
=
TestHelpers
::
assorted_integers_id
(
c_i
);
AssortedIntegers
cr
=
TestHelpers
::
assorted_integers_id
(
c_i
);
return
NativeAssortedIntegers
::
toJava
(
jniEnv
,
cr
);
return
NativeAssortedIntegers
::
toJava
(
jniEnv
,
cr
);
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
0
/* value doesn't matter */
)
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
0
/* value doesn't matter */
)
}
}
}
// namespace djinni_generated
}
// namespace djinni_generated
test-suite/generated-src/objc/DBCppException.h
View file @
6b17a860
...
@@ -9,6 +9,6 @@
...
@@ -9,6 +9,6 @@
-
(
int32_t
)
throwAnException
;
-
(
int32_t
)
throwAnException
;
+
(
DBCppException
*
)
get
;
+
(
DBCppException
*
)
get
;
@end
@end
test-suite/generated-src/objc/DBCppException.mm
View file @
6b17a860
...
@@ -47,7 +47,7 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th
...
@@ -47,7 +47,7 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th
}
DJINNI_TRANSLATE_EXCEPTIONS
()
}
DJINNI_TRANSLATE_EXCEPTIONS
()
}
}
+
(
DBCppException
*
)
get
{
+
(
DBCppException
*
)
get
{
try
{
try
{
std
::
shared_ptr
<
CppException
>
cppRet
=
CppException
::
get
();
std
::
shared_ptr
<
CppException
>
cppRet
=
CppException
::
get
();
DBCppException
*
objcRet
=
[
DBCppException
cppExceptionWithCpp
:
cppRet
];
DBCppException
*
objcRet
=
[
DBCppException
cppExceptionWithCpp
:
cppRet
];
...
...
test-suite/generated-src/objc/DBTestHelpers.h
View file @
6b17a860
...
@@ -44,13 +44,13 @@
...
@@ -44,13 +44,13 @@
+
(
void
)
checkEnumMap
:(
NSDictionary
*
)
m
;
+
(
void
)
checkEnumMap
:(
NSDictionary
*
)
m
;
+
(
DBToken
*
)
tokenId
:(
DBToken
*
)
t
;
+
(
DBToken
*
)
tokenId
:(
DBToken
*
)
t
;
+
(
DBToken
*
)
createCppToken
;
+
(
DBToken
*
)
createCppToken
;
+
(
void
)
checkCppToken
:(
DBToken
*
)
t
;
+
(
void
)
checkCppToken
:(
DBToken
*
)
t
;
+
(
int64_t
)
cppTokenId
:(
DBToken
*
)
t
;
+
(
int64_t
)
cppTokenId
:(
DBToken
*
)
t
;
+
(
NSNumber
*
)
returnNone
;
+
(
NSNumber
*
)
returnNone
;
...
...
test-suite/generated-src/objc/DBTestHelpers.mm
View file @
6b17a860
...
@@ -209,7 +209,7 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th
...
@@ -209,7 +209,7 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th
}
DJINNI_TRANSLATE_EXCEPTIONS
()
}
DJINNI_TRANSLATE_EXCEPTIONS
()
}
}
+
(
DBToken
*
)
tokenId
:(
DBToken
*
)
t
{
+
(
DBToken
*
)
tokenId
:(
DBToken
*
)
t
{
try
{
try
{
std
::
shared_ptr
<
Token
>
cppT
=
t
.
cppRef
;
std
::
shared_ptr
<
Token
>
cppT
=
t
.
cppRef
;
std
::
shared_ptr
<
Token
>
cppRet
=
TestHelpers
::
token_id
(
std
::
move
(
cppT
));
std
::
shared_ptr
<
Token
>
cppRet
=
TestHelpers
::
token_id
(
std
::
move
(
cppT
));
...
@@ -218,7 +218,7 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th
...
@@ -218,7 +218,7 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th
}
DJINNI_TRANSLATE_EXCEPTIONS
()
}
DJINNI_TRANSLATE_EXCEPTIONS
()
}
}
+
(
DBToken
*
)
createCppToken
{
+
(
DBToken
*
)
createCppToken
{
try
{
try
{
std
::
shared_ptr
<
Token
>
cppRet
=
TestHelpers
::
create_cpp_token
();
std
::
shared_ptr
<
Token
>
cppRet
=
TestHelpers
::
create_cpp_token
();
DBToken
*
objcRet
=
[
DBToken
tokenWithCpp
:
cppRet
];
DBToken
*
objcRet
=
[
DBToken
tokenWithCpp
:
cppRet
];
...
@@ -226,14 +226,14 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th
...
@@ -226,14 +226,14 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th
}
DJINNI_TRANSLATE_EXCEPTIONS
()
}
DJINNI_TRANSLATE_EXCEPTIONS
()
}
}
+
(
void
)
checkCppToken
:(
DBToken
*
)
t
{
+
(
void
)
checkCppToken
:(
DBToken
*
)
t
{
try
{
try
{
std
::
shared_ptr
<
Token
>
cppT
=
t
.
cppRef
;
std
::
shared_ptr
<
Token
>
cppT
=
t
.
cppRef
;
TestHelpers
::
check_cpp_token
(
std
::
move
(
cppT
));
TestHelpers
::
check_cpp_token
(
std
::
move
(
cppT
));
}
DJINNI_TRANSLATE_EXCEPTIONS
()
}
DJINNI_TRANSLATE_EXCEPTIONS
()
}
}
+
(
int64_t
)
cppTokenId
:(
DBToken
*
)
t
{
+
(
int64_t
)
cppTokenId
:(
DBToken
*
)
t
{
try
{
try
{
std
::
shared_ptr
<
Token
>
cppT
=
t
.
cppRef
;
std
::
shared_ptr
<
Token
>
cppT
=
t
.
cppRef
;
int64_t
cppRet
=
TestHelpers
::
cpp_token_id
(
std
::
move
(
cppT
));
int64_t
cppRet
=
TestHelpers
::
cpp_token_id
(
std
::
move
(
cppT
));
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment