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
2a896c73
Commit
2a896c73
authored
Jul 27, 2016
by
Andrew Twyman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix compilation of single_language_interfaces in ObjC
parent
d7877cac
Changes
13
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
163 additions
and
11 deletions
+163
-11
src/source/ObjcMarshal.scala
src/source/ObjcMarshal.scala
+2
-2
src/source/ObjcppGenerator.scala
src/source/ObjcppGenerator.scala
+13
-4
support-lib/objc/DJIError.h
support-lib/objc/DJIError.h
+6
-0
support-lib/objc/DJIError.mm
support-lib/objc/DJIError.mm
+5
-0
test-suite/djinni/single_language_interfaces.djinni
test-suite/djinni/single_language_interfaces.djinni
+2
-0
test-suite/generated-src/cpp/uses_single_language_listeners.hpp
...uite/generated-src/cpp/uses_single_language_listeners.hpp
+4
-0
test-suite/generated-src/java/com/dropbox/djinni/test/UsesSingleLanguageListeners.java
.../com/dropbox/djinni/test/UsesSingleLanguageListeners.java
+22
-0
test-suite/generated-src/jni/NativeUsesSingleLanguageListeners.cpp
...e/generated-src/jni/NativeUsesSingleLanguageListeners.cpp
+36
-0
test-suite/generated-src/jni/NativeUsesSingleLanguageListeners.hpp
...e/generated-src/jni/NativeUsesSingleLanguageListeners.hpp
+4
-0
test-suite/generated-src/objc/DBJavaOnlyListener+Private.mm
test-suite/generated-src/objc/DBJavaOnlyListener+Private.mm
+4
-2
test-suite/generated-src/objc/DBUsesSingleLanguageListeners+Private.mm
...nerated-src/objc/DBUsesSingleLanguageListeners+Private.mm
+29
-1
test-suite/generated-src/objc/DBUsesSingleLanguageListeners.h
...-suite/generated-src/objc/DBUsesSingleLanguageListeners.h
+6
-2
test-suite/objc/DjinniObjcTest.xcodeproj/project.pbxproj
test-suite/objc/DjinniObjcTest.xcodeproj/project.pbxproj
+30
-0
No files found.
src/source/ObjcMarshal.scala
View file @
2a896c73
...
...
@@ -58,7 +58,7 @@ class ObjcMarshal(spec: Spec) extends Marshal(spec) {
List
(
ImportRef
(
include
(
d
.
name
)))
case
DInterface
=>
val
ext
=
d
.
body
.
asInstanceOf
[
Interface
].
ext
if
(
ext
.
cpp
&&
!
ext
.
objc
)
{
if
(!
ext
.
objc
)
{
List
(
ImportRef
(
"<Foundation/Foundation.h>"
),
DeclRef
(
s
"@class ${typename(d.name, d.body)};"
,
None
))
}
else
{
...
...
@@ -119,7 +119,7 @@ class ObjcMarshal(spec: Spec) extends Marshal(spec) {
case
DRecord
=>
(
idObjc
.
ty
(
d
.
name
),
true
)
case
DInterface
=>
val
ext
=
d
.
body
.
asInstanceOf
[
Interface
].
ext
if
(
ext
.
cpp
&&
!
ext
.
objc
)
if
(!
ext
.
objc
)
(
idObjc
.
ty
(
d
.
name
),
true
)
else
(
s
"id<${idObjc.ty(d.name)}>"
,
false
)
...
...
src/source/ObjcppGenerator.scala
View file @
2a896c73
...
...
@@ -73,6 +73,7 @@ class ObjcppGenerator(spec: Spec) extends BaseObjcGenerator(spec) {
refs
.
privHeader
.
add
(
"#include <memory>"
)
refs
.
privHeader
.
add
(
"!#include "
+
q
(
spec
.
objcppIncludeCppPrefix
+
spec
.
cppFileIdentStyle
(
ident
)
+
"."
+
spec
.
cppHeaderExt
))
refs
.
body
.
add
(
"!#import "
+
q
(
spec
.
objcppIncludeObjcPrefix
+
headerName
(
ident
)))
refs
.
body
.
add
(
"!#import "
+
q
(
spec
.
objcppIncludePrefix
+
objcppMarshal
.
privateHeaderName
(
ident
.
name
)))
spec
.
cppNnHeader
match
{
case
Some
(
nnHdr
)
=>
refs
.
privHeader
.
add
(
"#include "
+
nnHdr
)
...
...
@@ -120,7 +121,6 @@ class ObjcppGenerator(spec: Spec) extends BaseObjcGenerator(spec) {
})
if
(
i
.
ext
.
cpp
)
{
refs
.
body
.
add
(
"!#import "
+
q
(
spec
.
objcppIncludePrefix
+
objcppMarshal
.
privateHeaderName
(
ident
.
name
)))
refs
.
body
.
add
(
"#import "
+
q
(
spec
.
objcBaseLibIncludePrefix
+
"DJICppWrapperCache+Private.h"
))
refs
.
body
.
add
(
"#include <utility>"
)
refs
.
body
.
add
(
"#import "
+
q
(
spec
.
objcBaseLibIncludePrefix
+
"DJIError.h"
))
...
...
@@ -129,7 +129,10 @@ class ObjcppGenerator(spec: Spec) extends BaseObjcGenerator(spec) {
if
(
i
.
ext
.
objc
)
{
refs
.
body
.
add
(
"#import "
+
q
(
spec
.
objcBaseLibIncludePrefix
+
"DJIObjcWrapperCache+Private.h"
))
refs
.
body
.
add
(
"!#import "
+
q
(
spec
.
objcppIncludePrefix
+
objcppMarshal
.
privateHeaderName
(
ident
.
name
)))
}
if
(!
i
.
ext
.
cpp
&&
!
i
.
ext
.
objc
)
{
refs
.
body
.
add
(
"#import "
+
q
(
spec
.
objcBaseLibIncludePrefix
+
"DJIError.h"
))
}
writeObjcFile
(
privateBodyName
(
ident
.
name
),
origin
,
refs
.
body
,
w
=>
{
...
...
@@ -249,7 +252,7 @@ class ObjcppGenerator(spec: Spec) extends BaseObjcGenerator(spec) {
// we don't have to do any casting at all, just access cppRef directly.
w
.
wl
(
"return "
+
nnCheck
(
"objc->_cppRefHandle.get()"
)
+
";"
)
//w.wl(s"return ${spec.cppNnCheckExpression.getOrElse("")}(objc->_cppRefHandle.get());")
}
else
{
}
else
if
(
i
.
ext
.
cpp
||
i
.
ext
.
objc
)
{
// ObjC only, or ObjC and C++.
if
(
i
.
ext
.
cpp
)
{
// If it could be implemented in C++, we might have to unwrap a proxy object.
...
...
@@ -260,6 +263,9 @@ class ObjcppGenerator(spec: Spec) extends BaseObjcGenerator(spec) {
}
val
getProxyExpr
=
s
"::djinni::get_objc_proxy<ObjcProxy>(objc)"
w
.
wl
(
s
"return ${nnCheck(getProxyExpr)};"
)
}
else
{
// Neither ObjC nor C++. Unusable, but generate compilable code.
w
.
wl
(
"DJINNI_UNIMPLEMENTED(@\"Interface not implementable in any language.\");"
)
}
}
w
.
wl
...
...
@@ -272,7 +278,7 @@ class ObjcppGenerator(spec: Spec) extends BaseObjcGenerator(spec) {
// ObjC only. In this case we *must* unwrap a proxy object - the dynamic_cast will
// throw bad_cast if we gave it something of the wrong type.
w
.
wl
(
s
"return dynamic_cast<ObjcProxy&>(*cpp).Handle::get();"
)
}
else
{
}
else
if
(
i
.
ext
.
objc
||
i
.
ext
.
cpp
)
{
// C++ only, or C++ and ObjC.
if
(
i
.
ext
.
objc
)
{
// If it could be implemented in ObjC, we might have to unwrap a proxy object.
...
...
@@ -281,6 +287,9 @@ class ObjcppGenerator(spec: Spec) extends BaseObjcGenerator(spec) {
}
}
w
.
wl
(
s
"return ::djinni::get_cpp_proxy<$objcSelf>(cpp);"
)
}
else
{
// Neither ObjC nor C++. Unusable, but generate compilable code.
w
.
wl
(
"DJINNI_UNIMPLEMENTED(@\"Interface not implementable in any language.\");"
)
}
}
})
...
...
support-lib/objc/DJIError.h
View file @
2a896c73
...
...
@@ -18,11 +18,17 @@
namespace
djinni
{
// Throws an exception for an unimplemented method call.
[[
noreturn
]]
void
throwUnimplemented
(
const
char
*
ctx
,
NSString
*
msg
);
// Helper function for exception translation. Do not call directly!
[[
noreturn
]]
void
throwNSExceptionFromCurrent
(
const
char
*
ctx
);
}
// namespace djinni
#define DJINNI_UNIMPLEMENTED(msg) \
::djinni::throwUnimplemented(__PRETTY_FUNCTION__, msg);
#define DJINNI_TRANSLATE_EXCEPTIONS() \
catch (const std::exception & e) { \
::djinni::throwNSExceptionFromCurrent(__PRETTY_FUNCTION__); \
...
...
support-lib/objc/DJIError.mm
View file @
2a896c73
...
...
@@ -21,6 +21,11 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th
namespace
djinni
{
[[
noreturn
]]
__attribute__
((
weak
))
void
throwUnimplemented
(
const
char
*
/*ctx*/
,
NSString
*
message
)
{
[
NSException
raise
:
NSInternalInconsistencyException
format
:
@"Unimplemented: %@"
,
message
];
__builtin_unreachable
();
}
[[
noreturn
]]
__attribute__
((
weak
))
void
throwNSExceptionFromCurrent
(
const
char
*
/*ctx*/
)
{
try
{
throw
;
...
...
test-suite/djinni/single_language_interfaces.djinni
View file @
2a896c73
...
...
@@ -5,5 +5,7 @@ java_only_listener = interface +j {}
# on references to interfaces they don't need.
uses_single_language_listeners = interface +o +j +c {
callForObjC(l: objc_only_listener);
returnForObjC(): objc_only_listener;
callForJava(l: java_only_listener);
returnForJava(): java_only_listener;
}
test-suite/generated-src/cpp/uses_single_language_listeners.hpp
View file @
2a896c73
...
...
@@ -20,7 +20,11 @@ public:
virtual
void
callForObjC
(
const
std
::
shared_ptr
<
ObjcOnlyListener
>
&
l
)
=
0
;
virtual
std
::
shared_ptr
<
ObjcOnlyListener
>
returnForObjC
()
=
0
;
virtual
void
callForJava
(
const
std
::
shared_ptr
<
JavaOnlyListener
>
&
l
)
=
0
;
virtual
std
::
shared_ptr
<
JavaOnlyListener
>
returnForJava
()
=
0
;
};
}
// namespace testsuite
test-suite/generated-src/java/com/dropbox/djinni/test/UsesSingleLanguageListeners.java
View file @
2a896c73
...
...
@@ -14,8 +14,14 @@ import javax.annotation.Nonnull;
public
abstract
class
UsesSingleLanguageListeners
{
public
abstract
void
callForObjC
(
@CheckForNull
ObjcOnlyListener
l
);
@CheckForNull
public
abstract
ObjcOnlyListener
returnForObjC
();
public
abstract
void
callForJava
(
@CheckForNull
JavaOnlyListener
l
);
@CheckForNull
public
abstract
JavaOnlyListener
returnForJava
();
private
static
final
class
CppProxy
extends
UsesSingleLanguageListeners
{
private
final
long
nativeRef
;
...
...
@@ -47,6 +53,14 @@ public abstract class UsesSingleLanguageListeners {
}
private
native
void
native_callForObjC
(
long
_nativeRef
,
ObjcOnlyListener
l
);
@Override
public
ObjcOnlyListener
returnForObjC
()
{
assert
!
this
.
destroyed
.
get
()
:
"trying to use a destroyed object"
;
return
native_returnForObjC
(
this
.
nativeRef
);
}
private
native
ObjcOnlyListener
native_returnForObjC
(
long
_nativeRef
);
@Override
public
void
callForJava
(
JavaOnlyListener
l
)
{
...
...
@@ -54,5 +68,13 @@ public abstract class UsesSingleLanguageListeners {
native_callForJava
(
this
.
nativeRef
,
l
);
}
private
native
void
native_callForJava
(
long
_nativeRef
,
JavaOnlyListener
l
);
@Override
public
JavaOnlyListener
returnForJava
()
{
assert
!
this
.
destroyed
.
get
()
:
"trying to use a destroyed object"
;
return
native_returnForJava
(
this
.
nativeRef
);
}
private
native
JavaOnlyListener
native_returnForJava
(
long
_nativeRef
);
}
}
test-suite/generated-src/jni/NativeUsesSingleLanguageListeners.cpp
View file @
2a896c73
...
...
@@ -23,6 +23,14 @@ void NativeUsesSingleLanguageListeners::JavaProxy::callForObjC(const std::shared
::
djinni
::
get
(
::
djinni_generated
::
NativeObjcOnlyListener
::
fromCpp
(
jniEnv
,
c_l
)));
::
djinni
::
jniExceptionCheck
(
jniEnv
);
}
std
::
shared_ptr
<::
testsuite
::
ObjcOnlyListener
>
NativeUsesSingleLanguageListeners
::
JavaProxy
::
returnForObjC
()
{
auto
jniEnv
=
::
djinni
::
jniGetThreadEnv
();
::
djinni
::
JniLocalScope
jscope
(
jniEnv
,
10
);
const
auto
&
data
=
::
djinni
::
JniClass
<::
djinni_generated
::
NativeUsesSingleLanguageListeners
>::
get
();
auto
jret
=
jniEnv
->
CallObjectMethod
(
Handle
::
get
().
get
(),
data
.
method_returnForObjC
);
::
djinni
::
jniExceptionCheck
(
jniEnv
);
return
::
djinni_generated
::
NativeObjcOnlyListener
::
toCpp
(
jniEnv
,
jret
);
}
void
NativeUsesSingleLanguageListeners
::
JavaProxy
::
callForJava
(
const
std
::
shared_ptr
<::
testsuite
::
JavaOnlyListener
>
&
c_l
)
{
auto
jniEnv
=
::
djinni
::
jniGetThreadEnv
();
::
djinni
::
JniLocalScope
jscope
(
jniEnv
,
10
);
...
...
@@ -31,6 +39,14 @@ void NativeUsesSingleLanguageListeners::JavaProxy::callForJava(const std::shared
::
djinni
::
get
(
::
djinni_generated
::
NativeJavaOnlyListener
::
fromCpp
(
jniEnv
,
c_l
)));
::
djinni
::
jniExceptionCheck
(
jniEnv
);
}
std
::
shared_ptr
<::
testsuite
::
JavaOnlyListener
>
NativeUsesSingleLanguageListeners
::
JavaProxy
::
returnForJava
()
{
auto
jniEnv
=
::
djinni
::
jniGetThreadEnv
();
::
djinni
::
JniLocalScope
jscope
(
jniEnv
,
10
);
const
auto
&
data
=
::
djinni
::
JniClass
<::
djinni_generated
::
NativeUsesSingleLanguageListeners
>::
get
();
auto
jret
=
jniEnv
->
CallObjectMethod
(
Handle
::
get
().
get
(),
data
.
method_returnForJava
);
::
djinni
::
jniExceptionCheck
(
jniEnv
);
return
::
djinni_generated
::
NativeJavaOnlyListener
::
toCpp
(
jniEnv
,
jret
);
}
CJNIEXPORT
void
JNICALL
Java_com_dropbox_djinni_test_UsesSingleLanguageListeners_00024CppProxy_nativeDestroy
(
JNIEnv
*
jniEnv
,
jobject
/*this*/
,
jlong
nativeRef
)
{
...
...
@@ -49,6 +65,16 @@ CJNIEXPORT void JNICALL Java_com_dropbox_djinni_test_UsesSingleLanguageListeners
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
)
}
CJNIEXPORT
jobject
JNICALL
Java_com_dropbox_djinni_test_UsesSingleLanguageListeners_00024CppProxy_native_1returnForObjC
(
JNIEnv
*
jniEnv
,
jobject
/*this*/
,
jlong
nativeRef
)
{
try
{
DJINNI_FUNCTION_PROLOGUE1
(
jniEnv
,
nativeRef
);
const
auto
&
ref
=
::
djinni
::
objectFromHandleAddress
<::
testsuite
::
UsesSingleLanguageListeners
>
(
nativeRef
);
auto
r
=
ref
->
returnForObjC
();
return
::
djinni
::
release
(
::
djinni_generated
::
NativeObjcOnlyListener
::
fromCpp
(
jniEnv
,
r
));
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
0
/* value doesn't matter */
)
}
CJNIEXPORT
void
JNICALL
Java_com_dropbox_djinni_test_UsesSingleLanguageListeners_00024CppProxy_native_1callForJava
(
JNIEnv
*
jniEnv
,
jobject
/*this*/
,
jlong
nativeRef
,
jobject
j_l
)
{
try
{
...
...
@@ -58,4 +84,14 @@ CJNIEXPORT void JNICALL Java_com_dropbox_djinni_test_UsesSingleLanguageListeners
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
)
}
CJNIEXPORT
jobject
JNICALL
Java_com_dropbox_djinni_test_UsesSingleLanguageListeners_00024CppProxy_native_1returnForJava
(
JNIEnv
*
jniEnv
,
jobject
/*this*/
,
jlong
nativeRef
)
{
try
{
DJINNI_FUNCTION_PROLOGUE1
(
jniEnv
,
nativeRef
);
const
auto
&
ref
=
::
djinni
::
objectFromHandleAddress
<::
testsuite
::
UsesSingleLanguageListeners
>
(
nativeRef
);
auto
r
=
ref
->
returnForJava
();
return
::
djinni
::
release
(
::
djinni_generated
::
NativeJavaOnlyListener
::
fromCpp
(
jniEnv
,
r
));
}
JNI_TRANSLATE_EXCEPTIONS_RETURN
(
jniEnv
,
0
/* value doesn't matter */
)
}
}
// namespace djinni_generated
test-suite/generated-src/jni/NativeUsesSingleLanguageListeners.hpp
View file @
2a896c73
...
...
@@ -34,7 +34,9 @@ private:
~
JavaProxy
();
void
callForObjC
(
const
std
::
shared_ptr
<::
testsuite
::
ObjcOnlyListener
>
&
l
)
override
;
std
::
shared_ptr
<::
testsuite
::
ObjcOnlyListener
>
returnForObjC
()
override
;
void
callForJava
(
const
std
::
shared_ptr
<::
testsuite
::
JavaOnlyListener
>
&
l
)
override
;
std
::
shared_ptr
<::
testsuite
::
JavaOnlyListener
>
returnForJava
()
override
;
private:
friend
::
djinni
::
JniInterface
<::
testsuite
::
UsesSingleLanguageListeners
,
::
djinni_generated
::
NativeUsesSingleLanguageListeners
>
;
...
...
@@ -42,7 +44,9 @@ private:
const
::
djinni
::
GlobalRef
<
jclass
>
clazz
{
::
djinni
::
jniFindClass
(
"com/dropbox/djinni/test/UsesSingleLanguageListeners"
)
};
const
jmethodID
method_callForObjC
{
::
djinni
::
jniGetMethodID
(
clazz
.
get
(),
"callForObjC"
,
"(Lcom/dropbox/djinni/test/ObjcOnlyListener;)V"
)
};
const
jmethodID
method_returnForObjC
{
::
djinni
::
jniGetMethodID
(
clazz
.
get
(),
"returnForObjC"
,
"()Lcom/dropbox/djinni/test/ObjcOnlyListener;"
)
};
const
jmethodID
method_callForJava
{
::
djinni
::
jniGetMethodID
(
clazz
.
get
(),
"callForJava"
,
"(Lcom/dropbox/djinni/test/JavaOnlyListener;)V"
)
};
const
jmethodID
method_returnForJava
{
::
djinni
::
jniGetMethodID
(
clazz
.
get
(),
"returnForJava"
,
"()Lcom/dropbox/djinni/test/JavaOnlyListener;"
)
};
};
}
// namespace djinni_generated
test-suite/generated-src/objc/DBJavaOnlyListener+Private.mm
View file @
2a896c73
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from single_language_interfaces.djinni
#import "DBJavaOnlyListener+Private.h"
#import "DBJavaOnlyListener.h"
#import "DJIError.h"
static_assert
(
__has_feature
(
objc_arc
),
"Djinni requires ARC to be enabled for this file"
);
...
...
@@ -12,7 +14,7 @@ auto JavaOnlyListener::toCpp(ObjcType objc) -> CppType
if
(
!
objc
)
{
return
nullptr
;
}
return
::
djinni
::
get_objc_proxy
<
ObjcProxy
>
(
objc
);
DJINNI_UNIMPLEMENTED
(
@"Interface not implementable in any language."
);
}
auto
JavaOnlyListener
::
fromCppOpt
(
const
CppOptType
&
cpp
)
->
ObjcType
...
...
@@ -20,7 +22,7 @@ auto JavaOnlyListener::fromCppOpt(const CppOptType& cpp) -> ObjcType
if
(
!
cpp
)
{
return
nil
;
}
return
::
djinni
::
get_cpp_proxy
<
DBJavaOnlyListener
>
(
cpp
);
DJINNI_UNIMPLEMENTED
(
@"Interface not implementable in any language."
);
}
}
// namespace djinni_generated
test-suite/generated-src/objc/DBUsesSingleLanguageListeners+Private.mm
View file @
2a896c73
...
...
@@ -37,12 +37,26 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th
}
DJINNI_TRANSLATE_EXCEPTIONS
()
}
-
(
void
)
callForJava
:(
nullable
id
<
DBJavaOnlyListener
>
)
l
{
-
(
nullable
id
<
DBObjcOnlyListener
>
)
returnForObjC
{
try
{
auto
r
=
_cppRefHandle
.
get
()
->
returnForObjC
();
return
::
djinni_generated
::
ObjcOnlyListener
::
fromCpp
(
r
);
}
DJINNI_TRANSLATE_EXCEPTIONS
()
}
-
(
void
)
callForJava
:(
nullable
DBJavaOnlyListener
*
)
l
{
try
{
_cppRefHandle
.
get
()
->
callForJava
(
::
djinni_generated
::
JavaOnlyListener
::
toCpp
(
l
));
}
DJINNI_TRANSLATE_EXCEPTIONS
()
}
-
(
nullable
DBJavaOnlyListener
*
)
returnForJava
{
try
{
auto
r
=
_cppRefHandle
.
get
()
->
returnForJava
();
return
::
djinni_generated
::
JavaOnlyListener
::
fromCpp
(
r
);
}
DJINNI_TRANSLATE_EXCEPTIONS
()
}
namespace
djinni_generated
{
class
UsesSingleLanguageListeners
::
ObjcProxy
final
...
...
@@ -57,12 +71,26 @@ public:
[
Handle
:
:
get
()
callForObjC
:(
::
djinni_generated
::
ObjcOnlyListener
::
fromCpp
(
c_l
))];
}
}
std
::
shared_ptr
<::
testsuite
::
ObjcOnlyListener
>
returnForObjC
()
override
{
@autoreleasepool
{
auto
r
=
[
Handle
:
:
get
()
returnForObjC
];
return
::
djinni_generated
::
ObjcOnlyListener
::
toCpp
(
r
);
}
}
void
callForJava
(
const
std
::
shared_ptr
<::
testsuite
::
JavaOnlyListener
>
&
c_l
)
override
{
@autoreleasepool
{
[
Handle
:
:
get
()
callForJava
:(
::
djinni_generated
::
JavaOnlyListener
::
fromCpp
(
c_l
))];
}
}
std
::
shared_ptr
<::
testsuite
::
JavaOnlyListener
>
returnForJava
()
override
{
@autoreleasepool
{
auto
r
=
[
Handle
:
:
get
()
returnForJava
];
return
::
djinni_generated
::
JavaOnlyListener
::
toCpp
(
r
);
}
}
};
}
// namespace djinni_generated
...
...
test-suite/generated-src/objc/DBUsesSingleLanguageListeners.h
View file @
2a896c73
...
...
@@ -2,7 +2,7 @@
// This file generated by Djinni from single_language_interfaces.djinni
#import <Foundation/Foundation.h>
@
protocol
DBJavaOnlyListener
;
@
class
DBJavaOnlyListener
;
@protocol
DBObjcOnlyListener
;
...
...
@@ -14,6 +14,10 @@
-
(
void
)
callForObjC
:(
nullable
id
<
DBObjcOnlyListener
>
)
l
;
-
(
void
)
callForJava
:(
nullable
id
<
DBJavaOnlyListener
>
)
l
;
-
(
nullable
id
<
DBObjcOnlyListener
>
)
returnForObjC
;
-
(
void
)
callForJava
:(
nullable
DBJavaOnlyListener
*
)
l
;
-
(
nullable
DBJavaOnlyListener
*
)
returnForJava
;
@end
test-suite/objc/DjinniObjcTest.xcodeproj/project.pbxproj
View file @
2a896c73
...
...
@@ -72,6 +72,9 @@
B5D8FC371C23E2F40045ADCF
/* DBConstantRecord+Private.mm in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
B5D8FC351C23E2F40045ADCF
/* DBConstantRecord+Private.mm */
;
};
B5E9C93B1C1F9D9D0073C123
/* reverse_client_interface_impl.cpp in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
B5E9C9391C1F9D9D0073C123
/* reverse_client_interface_impl.cpp */
;
};
B5E9C9401C1F9E9E0073C123
/* DBReverseClientInterface+Private.mm in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
B5E9C93F1C1F9E9E0073C123
/* DBReverseClientInterface+Private.mm */
;
};
B5F06AB11D499379005BE736
/* DBUsesSingleLanguageListeners+Private.mm in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
B5F06AA81D499379005BE736
/* DBUsesSingleLanguageListeners+Private.mm */
;
};
B5F06AB21D499379005BE736
/* DBObjcOnlyListener+Private.mm in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
B5F06AAB1D499379005BE736
/* DBObjcOnlyListener+Private.mm */
;
};
B5F06AB31D499379005BE736
/* DBJavaOnlyListener+Private.mm in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
B5F06AAE1D499379005BE736
/* DBJavaOnlyListener+Private.mm */
;
};
CFAED8751B54291900E3B8A3
/* DBEmptyRecord.mm in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
CFAED8721B54291900E3B8A3
/* DBEmptyRecord.mm */
;
};
CFAED8761B54291900E3B8A3
/* DBEmptyRecord+Private.mm in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
CFAED8741B54291900E3B8A3
/* DBEmptyRecord+Private.mm */
;
};
CFC5D9D01B15105100BF2DF8
/* extern_record_with_derivings.cpp in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
CFC5D9CE1B15105100BF2DF8
/* extern_record_with_derivings.cpp */
;
};
...
...
@@ -281,6 +284,18 @@
B5E9C93D1C1F9E9E0073C123
/* DBReverseClientInterface.h */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.h
;
path
=
DBReverseClientInterface.h
;
sourceTree
=
"<group>"
;
};
B5E9C93E1C1F9E9E0073C123
/* DBReverseClientInterface+Private.h */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.h
;
path
=
"DBReverseClientInterface+Private.h"
;
sourceTree
=
"<group>"
;
};
B5E9C93F1C1F9E9E0073C123
/* DBReverseClientInterface+Private.mm */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.cpp.objcpp
;
path
=
"DBReverseClientInterface+Private.mm"
;
sourceTree
=
"<group>"
;
};
B5F06AA81D499379005BE736
/* DBUsesSingleLanguageListeners+Private.mm */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.cpp.objcpp
;
path
=
"DBUsesSingleLanguageListeners+Private.mm"
;
sourceTree
=
"<group>"
;
};
B5F06AA91D499379005BE736
/* DBUsesSingleLanguageListeners+Private.h */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.h
;
path
=
"DBUsesSingleLanguageListeners+Private.h"
;
sourceTree
=
"<group>"
;
};
B5F06AAA1D499379005BE736
/* DBUsesSingleLanguageListeners.h */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.h
;
path
=
DBUsesSingleLanguageListeners.h
;
sourceTree
=
"<group>"
;
};
B5F06AAB1D499379005BE736
/* DBObjcOnlyListener+Private.mm */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.cpp.objcpp
;
path
=
"DBObjcOnlyListener+Private.mm"
;
sourceTree
=
"<group>"
;
};
B5F06AAC1D499379005BE736
/* DBObjcOnlyListener+Private.h */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.h
;
path
=
"DBObjcOnlyListener+Private.h"
;
sourceTree
=
"<group>"
;
};
B5F06AAD1D499379005BE736
/* DBObjcOnlyListener.h */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.h
;
path
=
DBObjcOnlyListener.h
;
sourceTree
=
"<group>"
;
};
B5F06AAE1D499379005BE736
/* DBJavaOnlyListener+Private.mm */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.cpp.objcpp
;
path
=
"DBJavaOnlyListener+Private.mm"
;
sourceTree
=
"<group>"
;
};
B5F06AAF1D499379005BE736
/* DBJavaOnlyListener+Private.h */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.h
;
path
=
"DBJavaOnlyListener+Private.h"
;
sourceTree
=
"<group>"
;
};
B5F06AB01D499379005BE736
/* DBJavaOnlyListener.h */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.h
;
path
=
DBJavaOnlyListener.h
;
sourceTree
=
"<group>"
;
};
B5F06AB41D49950C005BE736
/* uses_single_language_listeners.hpp */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.cpp.h
;
path
=
uses_single_language_listeners.hpp
;
sourceTree
=
"<group>"
;
};
B5F06AB51D49950C005BE736
/* objc_only_listener.hpp */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.cpp.h
;
path
=
objc_only_listener.hpp
;
sourceTree
=
"<group>"
;
};
B5F06AB61D49950C005BE736
/* java_only_listener.hpp */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.cpp.h
;
path
=
java_only_listener.hpp
;
sourceTree
=
"<group>"
;
};
CFAED8711B54291900E3B8A3
/* DBEmptyRecord.h */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.h
;
path
=
DBEmptyRecord.h
;
sourceTree
=
"<group>"
;
};
CFAED8721B54291900E3B8A3
/* DBEmptyRecord.mm */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.cpp.objcpp
;
path
=
DBEmptyRecord.mm
;
sourceTree
=
"<group>"
;
};
CFAED8731B54291900E3B8A3
/* DBEmptyRecord+Private.h */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.h
;
path
=
"DBEmptyRecord+Private.h"
;
sourceTree
=
"<group>"
;
};
...
...
@@ -453,6 +468,15 @@
A24249181AF192E0003BF8F0
/* generated-objc */
=
{
isa
=
PBXGroup
;
children
=
(
B5F06AA81D499379005BE736
/* DBUsesSingleLanguageListeners+Private.mm */
,
B5F06AA91D499379005BE736
/* DBUsesSingleLanguageListeners+Private.h */
,
B5F06AAA1D499379005BE736
/* DBUsesSingleLanguageListeners.h */
,
B5F06AAB1D499379005BE736
/* DBObjcOnlyListener+Private.mm */
,
B5F06AAC1D499379005BE736
/* DBObjcOnlyListener+Private.h */
,
B5F06AAD1D499379005BE736
/* DBObjcOnlyListener.h */
,
B5F06AAE1D499379005BE736
/* DBJavaOnlyListener+Private.mm */
,
B5F06AAF1D499379005BE736
/* DBJavaOnlyListener+Private.h */
,
B5F06AB01D499379005BE736
/* DBJavaOnlyListener.h */
,
B5D8FC321C23E2F40045ADCF
/* DBConstantRecord.h */
,
B5D8FC331C23E2F40045ADCF
/* DBConstantRecord.mm */
,
B5D8FC341C23E2F40045ADCF
/* DBConstantRecord+Private.h */
,
...
...
@@ -573,6 +597,9 @@
A242495D1AF192FC003BF8F0
/* generated-cpp */
=
{
isa
=
PBXGroup
;
children
=
(
B5F06AB41D49950C005BE736
/* uses_single_language_listeners.hpp */
,
B5F06AB51D49950C005BE736
/* objc_only_listener.hpp */
,
B5F06AB61D49950C005BE736
/* java_only_listener.hpp */
,
B5D8FC381C23E30D0045ADCF
/* constant_record.hpp */
,
B5E9C93C1C1F9DCA0073C123
/* reverse_client_interface.hpp */
,
A209B57B1BBA2A180070C310
/* opt_color_record.hpp */
,
...
...
@@ -707,6 +734,7 @@
655168421C404B81003682A4
/* DBFirstListener+Private.mm in Sources */
,
A24850271AF96EBC00AFE907
/* DBClientReturnedRecord.mm in Sources */
,
CFC5D9D61B15106400BF2DF8
/* DBExternRecordWithDerivings.mm in Sources */
,
B5F06AB31D499379005BE736
/* DBJavaOnlyListener+Private.mm in Sources */
,
CFC5DA0E1B15330000BF2DF8
/* record_with_duration_and_derivings.cpp in Sources */
,
A238CA941AF84B7100CDDCE5
/* DBMapDateRecord+Private.mm in Sources */
,
CFFD588F1B019E79001E10B6
/* DBTestHelpers+Private.mm in Sources */
,
...
...
@@ -730,10 +758,12 @@
A24249741AF192FC003BF8F0
/* constants.cpp in Sources */
,
CFFD588B1B019E79001E10B6
/* DBClientInterface+Private.mm in Sources */
,
B52DA5691B103F72005CE75F
/* DBAssortedPrimitives.mm in Sources */
,
B5F06AB21D499379005BE736
/* DBObjcOnlyListener+Private.mm in Sources */
,
A24850281AF96EBC00AFE907
/* DBConstants.mm in Sources */
,
655168431C404B81003682A4
/* DBSecondListener+Private.mm in Sources */
,
CFFD58B71B041BFD001E10B6
/* constants_interface.cpp in Sources */
,
CFAED8751B54291900E3B8A3
/* DBEmptyRecord.mm in Sources */
,
B5F06AB11D499379005BE736
/* DBUsesSingleLanguageListeners+Private.mm in Sources */
,
A238CA9A1AF84B7100CDDCE5
/* DBNestedCollection+Private.mm in Sources */
,
CFFD58911B019E79001E10B6
/* DBUserToken+Private.mm in Sources */
,
A2CB54B419BA6E6000A9E600
/* DJIError.mm in Sources */
,
...
...
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