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
0fc73a73
Commit
0fc73a73
authored
May 16, 2015
by
Jacob Potter
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix bad 'auto jret =' placement around return values that need a cast, and add test
parent
1af0fea6
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
42 additions
and
7 deletions
+42
-7
src/source/JNIGenerator.scala
src/source/JNIGenerator.scala
+3
-3
test-suite/djinni/client_interface.djinni
test-suite/djinni/client_interface.djinni
+1
-0
test-suite/generated-src/cpp/client_interface.hpp
test-suite/generated-src/cpp/client_interface.hpp
+2
-0
test-suite/generated-src/java/com/dropbox/djinni/test/ClientInterface.java
...ted-src/java/com/dropbox/djinni/test/ClientInterface.java
+2
-0
test-suite/generated-src/jni/NativeClientInterface.cpp
test-suite/generated-src/jni/NativeClientInterface.cpp
+8
-0
test-suite/generated-src/jni/NativeClientInterface.hpp
test-suite/generated-src/jni/NativeClientInterface.hpp
+2
-0
test-suite/generated-src/jni/NativeClientReturnedRecord.cpp
test-suite/generated-src/jni/NativeClientReturnedRecord.cpp
+2
-2
test-suite/generated-src/jni/NativeConstants.cpp
test-suite/generated-src/jni/NativeConstants.cpp
+1
-1
test-suite/generated-src/jni/NativeRecordWithDerivings.cpp
test-suite/generated-src/jni/NativeRecordWithDerivings.cpp
+1
-1
test-suite/generated-src/objc/DBClientInterface+Private.mm
test-suite/generated-src/objc/DBClientInterface+Private.mm
+7
-0
test-suite/generated-src/objc/DBClientInterface.h
test-suite/generated-src/objc/DBClientInterface.h
+2
-0
test-suite/handwritten-src/java/com/dropbox/djinni/test/ClientInterfaceImpl.java
...src/java/com/dropbox/djinni/test/ClientInterfaceImpl.java
+4
-0
test-suite/handwritten-src/objc/impl/DBClientInterfaceImpl.mm
...-suite/handwritten-src/objc/impl/DBClientInterfaceImpl.mm
+5
-0
test-suite/objc/DjinniObjcTest.xcodeproj/project.pbxproj
test-suite/objc/DjinniObjcTest.xcodeproj/project.pbxproj
+2
-0
No files found.
src/source/JNIGenerator.scala
View file @
0fc73a73
...
@@ -254,7 +254,7 @@ class JNIGenerator(spec: Spec) extends Generator(spec) {
...
@@ -254,7 +254,7 @@ class JNIGenerator(spec: Spec) extends Generator(spec) {
w
.
wl
(
s
"auto jniEnv = ::djinni::jniGetThreadEnv();"
)
w
.
wl
(
s
"auto jniEnv = ::djinni::jniGetThreadEnv();"
)
w
.
wl
(
s
"::djinni::JniLocalScope jscope(jniEnv, 10);"
)
w
.
wl
(
s
"::djinni::JniLocalScope jscope(jniEnv, 10);"
)
w
.
wl
(
s
"const auto& data = ::djinni::JniClass<${withNs(Some(spec.jniNamespace), jniSelf)}>::get();"
)
w
.
wl
(
s
"const auto& data = ::djinni::JniClass<${withNs(Some(spec.jniNamespace), jniSelf)}>::get();"
)
val
call
=
m
.
ret
.
fold
(
"jniEnv->CallVoidMethod("
)(
r
=>
toJniCall
(
r
,
(
jt
:
String
)
=>
s
"auto jret =
jniEnv->Call${jt}Method("
))
val
call
=
m
.
ret
.
fold
(
"jniEnv->CallVoidMethod("
)(
r
=>
"auto jret = "
+
toJniCall
(
r
,
(
jt
:
String
)
=>
s
"
jniEnv->Call${jt}Method("
))
w
.
w
(
call
)
w
.
w
(
call
)
val
javaMethodName
=
idJava
.
method
(
m
.
ident
)
val
javaMethodName
=
idJava
.
method
(
m
.
ident
)
w
.
w
(
s
"getGlobalRef(), data.method_$javaMethodName"
)
w
.
w
(
s
"getGlobalRef(), data.method_$javaMethodName"
)
...
@@ -350,9 +350,9 @@ class JNIGenerator(spec: Spec) extends Generator(spec) {
...
@@ -350,9 +350,9 @@ class JNIGenerator(spec: Spec) extends Generator(spec) {
def
toJniCall
(
ty
:
TypeRef
,
f
:
String
=>
String
)
:
String
=
toJniCall
(
ty
.
resolved
,
f
,
false
)
def
toJniCall
(
ty
:
TypeRef
,
f
:
String
=>
String
)
:
String
=
toJniCall
(
ty
.
resolved
,
f
,
false
)
def
toJniCall
(
m
:
MExpr
,
f
:
String
=>
String
,
needRef
:
Boolean
)
:
String
=
m
.
base
match
{
def
toJniCall
(
m
:
MExpr
,
f
:
String
=>
String
,
needRef
:
Boolean
)
:
String
=
m
.
base
match
{
case
p
:
MPrimitive
=>
f
(
if
(
needRef
)
"Object"
else
IdentStyle
.
camelUpper
(
p
.
jName
))
case
p
:
MPrimitive
=>
f
(
if
(
needRef
)
"Object"
else
IdentStyle
.
camelUpper
(
p
.
jName
))
case
MString
=>
s
"static_cast<jstring>(${f("
Object
")})"
case
MString
=>
"(jstring)"
+
f
(
"Object"
)
case
MOptional
=>
toJniCall
(
m
.
args
.
head
,
f
,
true
)
case
MOptional
=>
toJniCall
(
m
.
args
.
head
,
f
,
true
)
case
MBinary
=>
s
"static_cast<jbyteArray>(${f("
Object
")})"
case
MBinary
=>
"(jbyteArray)"
+
f
(
"Object"
)
case
_
=>
f
(
"Object"
)
case
_
=>
f
(
"Object"
)
}
}
...
...
test-suite/djinni/client_interface.djinni
View file @
0fc73a73
...
@@ -7,4 +7,5 @@ client_returned_record = record {
...
@@ -7,4 +7,5 @@ client_returned_record = record {
client_interface = interface +j +o {
client_interface = interface +j +o {
# Returns record of given string
# Returns record of given string
get_record(record_id: i64, utf8string: string, misc: optional<string>): client_returned_record;
get_record(record_id: i64, utf8string: string, misc: optional<string>): client_returned_record;
return_str(): string;
}
}
test-suite/generated-src/cpp/client_interface.hpp
View file @
0fc73a73
...
@@ -14,4 +14,6 @@ public:
...
@@ -14,4 +14,6 @@ public:
/** Returns record of given string */
/** Returns record of given string */
virtual
ClientReturnedRecord
get_record
(
int64_t
record_id
,
const
std
::
string
&
utf8string
,
const
std
::
experimental
::
optional
<
std
::
string
>
&
misc
)
=
0
;
virtual
ClientReturnedRecord
get_record
(
int64_t
record_id
,
const
std
::
string
&
utf8string
,
const
std
::
experimental
::
optional
<
std
::
string
>
&
misc
)
=
0
;
virtual
std
::
string
return_str
()
=
0
;
};
};
test-suite/generated-src/java/com/dropbox/djinni/test/ClientInterface.java
View file @
0fc73a73
...
@@ -6,4 +6,6 @@ package com.dropbox.djinni.test;
...
@@ -6,4 +6,6 @@ package com.dropbox.djinni.test;
public
abstract
class
ClientInterface
{
public
abstract
class
ClientInterface
{
/** Returns record of given string */
/** Returns record of given string */
public
abstract
ClientReturnedRecord
getRecord
(
long
recordId
,
String
utf8string
,
String
misc
);
public
abstract
ClientReturnedRecord
getRecord
(
long
recordId
,
String
utf8string
,
String
misc
);
public
abstract
String
returnStr
();
}
}
test-suite/generated-src/jni/NativeClientInterface.cpp
View file @
0fc73a73
...
@@ -26,5 +26,13 @@ NativeClientInterface::JavaProxy::~JavaProxy() = default;
...
@@ -26,5 +26,13 @@ NativeClientInterface::JavaProxy::~JavaProxy() = default;
::
djinni
::
jniExceptionCheck
(
jniEnv
);
::
djinni
::
jniExceptionCheck
(
jniEnv
);
return
::
djinni_generated
::
NativeClientReturnedRecord
::
toCpp
(
jniEnv
,
jret
);
return
::
djinni_generated
::
NativeClientReturnedRecord
::
toCpp
(
jniEnv
,
jret
);
}
}
std
::
string
NativeClientInterface
::
JavaProxy
::
return_str
()
{
auto
jniEnv
=
::
djinni
::
jniGetThreadEnv
();
::
djinni
::
JniLocalScope
jscope
(
jniEnv
,
10
);
const
auto
&
data
=
::
djinni
::
JniClass
<::
djinni_generated
::
NativeClientInterface
>::
get
();
auto
jret
=
(
jstring
)
jniEnv
->
CallObjectMethod
(
getGlobalRef
(),
data
.
method_returnStr
);
::
djinni
::
jniExceptionCheck
(
jniEnv
);
return
::
djinni
::
String
::
toCpp
(
jniEnv
,
jret
);
}
}
// namespace djinni_generated
}
// namespace djinni_generated
test-suite/generated-src/jni/NativeClientInterface.hpp
View file @
0fc73a73
...
@@ -32,6 +32,7 @@ private:
...
@@ -32,6 +32,7 @@ private:
~
JavaProxy
();
~
JavaProxy
();
::
ClientReturnedRecord
get_record
(
int64_t
record_id
,
const
std
::
string
&
utf8string
,
const
std
::
experimental
::
optional
<
std
::
string
>
&
misc
)
override
;
::
ClientReturnedRecord
get_record
(
int64_t
record_id
,
const
std
::
string
&
utf8string
,
const
std
::
experimental
::
optional
<
std
::
string
>
&
misc
)
override
;
std
::
string
return_str
()
override
;
private:
private:
using
::
djinni
::
JavaProxyCacheEntry
::
getGlobalRef
;
using
::
djinni
::
JavaProxyCacheEntry
::
getGlobalRef
;
...
@@ -41,6 +42,7 @@ private:
...
@@ -41,6 +42,7 @@ private:
const
::
djinni
::
GlobalRef
<
jclass
>
clazz
{
::
djinni
::
jniFindClass
(
"com/dropbox/djinni/test/ClientInterface"
)
};
const
::
djinni
::
GlobalRef
<
jclass
>
clazz
{
::
djinni
::
jniFindClass
(
"com/dropbox/djinni/test/ClientInterface"
)
};
const
jmethodID
method_getRecord
{
::
djinni
::
jniGetMethodID
(
clazz
.
get
(),
"getRecord"
,
"(JLjava/lang/String;Ljava/lang/String;)Lcom/dropbox/djinni/test/ClientReturnedRecord;"
)
};
const
jmethodID
method_getRecord
{
::
djinni
::
jniGetMethodID
(
clazz
.
get
(),
"getRecord"
,
"(JLjava/lang/String;Ljava/lang/String;)Lcom/dropbox/djinni/test/ClientReturnedRecord;"
)
};
const
jmethodID
method_returnStr
{
::
djinni
::
jniGetMethodID
(
clazz
.
get
(),
"returnStr"
,
"()Ljava/lang/String;"
)
};
};
};
}
// namespace djinni_generated
}
// namespace djinni_generated
test-suite/generated-src/jni/NativeClientReturnedRecord.cpp
View file @
0fc73a73
...
@@ -24,8 +24,8 @@ auto NativeClientReturnedRecord::toCpp(JNIEnv* jniEnv, JniType j) -> CppType {
...
@@ -24,8 +24,8 @@ auto NativeClientReturnedRecord::toCpp(JNIEnv* jniEnv, JniType j) -> CppType {
assert
(
j
!=
nullptr
);
assert
(
j
!=
nullptr
);
const
auto
&
data
=
::
djinni
::
JniClass
<
NativeClientReturnedRecord
>::
get
();
const
auto
&
data
=
::
djinni
::
JniClass
<
NativeClientReturnedRecord
>::
get
();
return
{
::
djinni
::
I64
::
toCpp
(
jniEnv
,
jniEnv
->
GetLongField
(
j
,
data
.
field_mRecordId
)),
return
{
::
djinni
::
I64
::
toCpp
(
jniEnv
,
jniEnv
->
GetLongField
(
j
,
data
.
field_mRecordId
)),
::
djinni
::
String
::
toCpp
(
jniEnv
,
static_cast
<
jstring
>
(
jniEnv
->
GetObjectField
(
j
,
data
.
field_mContent
)
)),
::
djinni
::
String
::
toCpp
(
jniEnv
,
(
jstring
)
jniEnv
->
GetObjectField
(
j
,
data
.
field_mContent
)),
::
djinni
::
Optional
<
std
::
experimental
::
optional
,
::
djinni
::
String
>::
toCpp
(
jniEnv
,
static_cast
<
jstring
>
(
jniEnv
->
GetObjectField
(
j
,
data
.
field_mMisc
)
))};
::
djinni
::
Optional
<
std
::
experimental
::
optional
,
::
djinni
::
String
>::
toCpp
(
jniEnv
,
(
jstring
)
jniEnv
->
GetObjectField
(
j
,
data
.
field_mMisc
))};
}
}
}
// namespace djinni_generated
}
// namespace djinni_generated
test-suite/generated-src/jni/NativeConstants.cpp
View file @
0fc73a73
...
@@ -23,7 +23,7 @@ auto NativeConstants::toCpp(JNIEnv* jniEnv, JniType j) -> CppType {
...
@@ -23,7 +23,7 @@ auto NativeConstants::toCpp(JNIEnv* jniEnv, JniType j) -> CppType {
assert
(
j
!=
nullptr
);
assert
(
j
!=
nullptr
);
const
auto
&
data
=
::
djinni
::
JniClass
<
NativeConstants
>::
get
();
const
auto
&
data
=
::
djinni
::
JniClass
<
NativeConstants
>::
get
();
return
{
::
djinni
::
I32
::
toCpp
(
jniEnv
,
jniEnv
->
GetIntField
(
j
,
data
.
field_mSomeInteger
)),
return
{
::
djinni
::
I32
::
toCpp
(
jniEnv
,
jniEnv
->
GetIntField
(
j
,
data
.
field_mSomeInteger
)),
::
djinni
::
String
::
toCpp
(
jniEnv
,
static_cast
<
jstring
>
(
jniEnv
->
GetObjectField
(
j
,
data
.
field_mSomeString
)
))};
::
djinni
::
String
::
toCpp
(
jniEnv
,
(
jstring
)
jniEnv
->
GetObjectField
(
j
,
data
.
field_mSomeString
))};
}
}
}
// namespace djinni_generated
}
// namespace djinni_generated
test-suite/generated-src/jni/NativeRecordWithDerivings.cpp
View file @
0fc73a73
...
@@ -23,7 +23,7 @@ auto NativeRecordWithDerivings::toCpp(JNIEnv* jniEnv, JniType j) -> CppType {
...
@@ -23,7 +23,7 @@ auto NativeRecordWithDerivings::toCpp(JNIEnv* jniEnv, JniType j) -> CppType {
assert
(
j
!=
nullptr
);
assert
(
j
!=
nullptr
);
const
auto
&
data
=
::
djinni
::
JniClass
<
NativeRecordWithDerivings
>::
get
();
const
auto
&
data
=
::
djinni
::
JniClass
<
NativeRecordWithDerivings
>::
get
();
return
{
::
djinni
::
I32
::
toCpp
(
jniEnv
,
jniEnv
->
GetIntField
(
j
,
data
.
field_mKey1
)),
return
{
::
djinni
::
I32
::
toCpp
(
jniEnv
,
jniEnv
->
GetIntField
(
j
,
data
.
field_mKey1
)),
::
djinni
::
String
::
toCpp
(
jniEnv
,
static_cast
<
jstring
>
(
jniEnv
->
GetObjectField
(
j
,
data
.
field_mKey2
)
))};
::
djinni
::
String
::
toCpp
(
jniEnv
,
(
jstring
)
jniEnv
->
GetObjectField
(
j
,
data
.
field_mKey2
))};
}
}
}
// namespace djinni_generated
}
// namespace djinni_generated
test-suite/generated-src/objc/DBClientInterface+Private.mm
View file @
0fc73a73
...
@@ -26,6 +26,13 @@ public:
...
@@ -26,6 +26,13 @@ public:
return
::
djinni_generated
::
ClientReturnedRecord
::
toCpp
(
r
);
return
::
djinni_generated
::
ClientReturnedRecord
::
toCpp
(
r
);
}
}
}
}
std
::
string
return_str
()
override
{
@autoreleasepool
{
auto
r
=
[
Handle
:
:
get
()
returnStr
];
return
::
djinni
::
String
::
toCpp
(
r
);
}
}
};
};
auto
ClientInterface
::
toCpp
(
ObjcType
objc
)
->
CppType
auto
ClientInterface
::
toCpp
(
ObjcType
objc
)
->
CppType
...
...
test-suite/generated-src/objc/DBClientInterface.h
View file @
0fc73a73
...
@@ -12,4 +12,6 @@
...
@@ -12,4 +12,6 @@
utf8string
:(
nonnull
NSString
*
)
utf8string
utf8string
:(
nonnull
NSString
*
)
utf8string
misc
:(
nullable
NSString
*
)
misc
;
misc
:(
nullable
NSString
*
)
misc
;
-
(
nonnull
NSString
*
)
returnStr
;
@end
@end
test-suite/handwritten-src/java/com/dropbox/djinni/test/ClientInterfaceImpl.java
View file @
0fc73a73
...
@@ -10,4 +10,8 @@ public class ClientInterfaceImpl extends ClientInterface {
...
@@ -10,4 +10,8 @@ public class ClientInterfaceImpl extends ClientInterface {
}
}
return
new
ClientReturnedRecord
(
id
,
utf8string
,
misc
);
return
new
ClientReturnedRecord
(
id
,
utf8string
,
misc
);
}
}
@Override
public
String
returnStr
()
{
return
"test"
;
}
}
}
test-suite/handwritten-src/objc/impl/DBClientInterfaceImpl.mm
View file @
0fc73a73
...
@@ -12,4 +12,9 @@ static NSString *DBNonAscii = @"Non-ASCII / 非 ASCII 字符";
...
@@ -12,4 +12,9 @@ static NSString *DBNonAscii = @"Non-ASCII / 非 ASCII 字符";
return
[[
DBClientReturnedRecord
alloc
]
initWithRecordId
:
ident
content
:
utf8string
misc
:
misc
];
return
[[
DBClientReturnedRecord
alloc
]
initWithRecordId
:
ident
content
:
utf8string
misc
:
misc
];
}
}
-
(
NSString
*
)
returnStr
{
return
@"test"
;
}
@end
@end
test-suite/objc/DjinniObjcTest.xcodeproj/project.pbxproj
View file @
0fc73a73
...
@@ -620,6 +620,7 @@
...
@@ -620,6 +620,7 @@
"$(inherited)"
,
"$(inherited)"
,
);
);
GCC_SYMBOLS_PRIVATE_EXTERN
=
NO
;
GCC_SYMBOLS_PRIVATE_EXTERN
=
NO
;
GCC_TREAT_WARNINGS_AS_ERRORS
=
YES
;
GCC_WARN_64_TO_32_BIT_CONVERSION
=
YES
;
GCC_WARN_64_TO_32_BIT_CONVERSION
=
YES
;
GCC_WARN_ABOUT_RETURN_TYPE
=
YES_ERROR
;
GCC_WARN_ABOUT_RETURN_TYPE
=
YES_ERROR
;
GCC_WARN_UNDECLARED_SELECTOR
=
YES
;
GCC_WARN_UNDECLARED_SELECTOR
=
YES
;
...
@@ -657,6 +658,7 @@
...
@@ -657,6 +658,7 @@
COPY_PHASE_STRIP
=
YES
;
COPY_PHASE_STRIP
=
YES
;
ENABLE_NS_ASSERTIONS
=
NO
;
ENABLE_NS_ASSERTIONS
=
NO
;
GCC_C_LANGUAGE_STANDARD
=
gnu99
;
GCC_C_LANGUAGE_STANDARD
=
gnu99
;
GCC_TREAT_WARNINGS_AS_ERRORS
=
YES
;
GCC_WARN_64_TO_32_BIT_CONVERSION
=
YES
;
GCC_WARN_64_TO_32_BIT_CONVERSION
=
YES
;
GCC_WARN_ABOUT_RETURN_TYPE
=
YES_ERROR
;
GCC_WARN_ABOUT_RETURN_TYPE
=
YES_ERROR
;
GCC_WARN_UNDECLARED_SELECTOR
=
YES
;
GCC_WARN_UNDECLARED_SELECTOR
=
YES
;
...
...
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