-
Notifications
You must be signed in to change notification settings - Fork 50
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #105 from paulocoutinhox/java-interface-support
java interface support
- Loading branch information
Showing
23 changed files
with
467 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
test_java_interface_only = interface +j { | ||
test_method(): bool; | ||
} | ||
|
||
test_java_abstract_class_only = interface +c { | ||
static test_method(): bool; | ||
} |
15 changes: 15 additions & 0 deletions
15
test-suite/generated-src/cpp/test_java_abstract_class_only.hpp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
// AUTOGENERATED FILE - DO NOT MODIFY! | ||
// This file was generated by Djinni from interface_and_abstract_class.djinni | ||
|
||
#pragma once | ||
|
||
namespace testsuite { | ||
|
||
class TestJavaAbstractClassOnly { | ||
public: | ||
virtual ~TestJavaAbstractClassOnly() = default; | ||
|
||
static bool test_method(); | ||
}; | ||
|
||
} // namespace testsuite |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
// AUTOGENERATED FILE - DO NOT MODIFY! | ||
// This file was generated by Djinni from interface_and_abstract_class.djinni | ||
|
||
#pragma once | ||
|
||
namespace testsuite { | ||
|
||
class TestJavaInterfaceOnly { | ||
public: | ||
virtual ~TestJavaInterfaceOnly() = default; | ||
|
||
virtual bool test_method() = 0; | ||
}; | ||
|
||
} // namespace testsuite |
27 changes: 27 additions & 0 deletions
27
test-suite/generated-src/java/com/dropbox/djinni/test/TestJavaAbstractClassOnly.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
// AUTOGENERATED FILE - DO NOT MODIFY! | ||
// This file was generated by Djinni from interface_and_abstract_class.djinni | ||
|
||
package com.dropbox.djinni.test; | ||
|
||
import com.snapchat.djinni.NativeObjectManager; | ||
import java.util.concurrent.atomic.AtomicBoolean; | ||
import javax.annotation.CheckForNull; | ||
import javax.annotation.Nonnull; | ||
|
||
public abstract class TestJavaAbstractClassOnly { | ||
public static native boolean testMethod(); | ||
|
||
public static final class CppProxy extends TestJavaAbstractClassOnly | ||
{ | ||
private final long nativeRef; | ||
private final AtomicBoolean destroyed = new AtomicBoolean(false); | ||
|
||
private CppProxy(long nativeRef) | ||
{ | ||
if (nativeRef == 0) throw new RuntimeException("nativeRef is zero"); | ||
this.nativeRef = nativeRef; | ||
NativeObjectManager.register(this, nativeRef); | ||
} | ||
public static native void nativeDestroy(long nativeRef); | ||
} | ||
} |
11 changes: 11 additions & 0 deletions
11
test-suite/generated-src/java/com/dropbox/djinni/test/TestJavaInterfaceOnly.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
// AUTOGENERATED FILE - DO NOT MODIFY! | ||
// This file was generated by Djinni from interface_and_abstract_class.djinni | ||
|
||
package com.dropbox.djinni.test; | ||
|
||
import javax.annotation.CheckForNull; | ||
import javax.annotation.Nonnull; | ||
|
||
public interface TestJavaInterfaceOnly { | ||
boolean testMethod(); | ||
} |
29 changes: 29 additions & 0 deletions
29
test-suite/generated-src/jni/NativeTestJavaAbstractClassOnly.cpp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
// AUTOGENERATED FILE - DO NOT MODIFY! | ||
// This file was generated by Djinni from interface_and_abstract_class.djinni | ||
|
||
#include "NativeTestJavaAbstractClassOnly.hpp" // my header | ||
#include "Marshal.hpp" | ||
|
||
namespace djinni_generated { | ||
|
||
NativeTestJavaAbstractClassOnly::NativeTestJavaAbstractClassOnly() : ::djinni::JniInterface<::testsuite::TestJavaAbstractClassOnly, NativeTestJavaAbstractClassOnly>("com/dropbox/djinni/test/TestJavaAbstractClassOnly$CppProxy") {} | ||
|
||
NativeTestJavaAbstractClassOnly::~NativeTestJavaAbstractClassOnly() = default; | ||
|
||
|
||
CJNIEXPORT void JNICALL Java_com_dropbox_djinni_test_TestJavaAbstractClassOnly_00024CppProxy_nativeDestroy(JNIEnv* jniEnv, jobject /*this*/, jlong nativeRef) | ||
{ | ||
try { | ||
delete reinterpret_cast<::djinni::CppProxyHandle<::testsuite::TestJavaAbstractClassOnly>*>(nativeRef); | ||
} JNI_TRANSLATE_EXCEPTIONS_RETURN(jniEnv, ) | ||
} | ||
|
||
CJNIEXPORT jboolean JNICALL Java_com_dropbox_djinni_test_TestJavaAbstractClassOnly_testMethod(JNIEnv* jniEnv, jobject /*this*/) | ||
{ | ||
try { | ||
auto r = ::testsuite::TestJavaAbstractClassOnly::test_method(); | ||
return ::djinni::release(::djinni::Bool::fromCpp(jniEnv, r)); | ||
} JNI_TRANSLATE_EXCEPTIONS_RETURN(jniEnv, 0 /* value doesn't matter */) | ||
} | ||
|
||
} // namespace djinni_generated |
32 changes: 32 additions & 0 deletions
32
test-suite/generated-src/jni/NativeTestJavaAbstractClassOnly.hpp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
// AUTOGENERATED FILE - DO NOT MODIFY! | ||
// This file was generated by Djinni from interface_and_abstract_class.djinni | ||
|
||
#pragma once | ||
|
||
#include "djinni_support.hpp" | ||
#include "test_java_abstract_class_only.hpp" | ||
|
||
namespace djinni_generated { | ||
|
||
class NativeTestJavaAbstractClassOnly final : ::djinni::JniInterface<::testsuite::TestJavaAbstractClassOnly, NativeTestJavaAbstractClassOnly> { | ||
public: | ||
using CppType = std::shared_ptr<::testsuite::TestJavaAbstractClassOnly>; | ||
using CppOptType = std::shared_ptr<::testsuite::TestJavaAbstractClassOnly>; | ||
using JniType = jobject; | ||
|
||
using Boxed = NativeTestJavaAbstractClassOnly; | ||
|
||
~NativeTestJavaAbstractClassOnly(); | ||
|
||
static CppType toCpp(JNIEnv* jniEnv, JniType j) { return ::djinni::JniClass<NativeTestJavaAbstractClassOnly>::get()._fromJava(jniEnv, j); } | ||
static ::djinni::LocalRef<JniType> fromCppOpt(JNIEnv* jniEnv, const CppOptType& c) { return {jniEnv, ::djinni::JniClass<NativeTestJavaAbstractClassOnly>::get()._toJava(jniEnv, c)}; } | ||
static ::djinni::LocalRef<JniType> fromCpp(JNIEnv* jniEnv, const CppType& c) { return fromCppOpt(jniEnv, c); } | ||
|
||
private: | ||
NativeTestJavaAbstractClassOnly(); | ||
friend ::djinni::JniClass<NativeTestJavaAbstractClassOnly>; | ||
friend ::djinni::JniInterface<::testsuite::TestJavaAbstractClassOnly, NativeTestJavaAbstractClassOnly>; | ||
|
||
}; | ||
|
||
} // namespace djinni_generated |
26 changes: 26 additions & 0 deletions
26
test-suite/generated-src/jni/NativeTestJavaInterfaceOnly.cpp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
// AUTOGENERATED FILE - DO NOT MODIFY! | ||
// This file was generated by Djinni from interface_and_abstract_class.djinni | ||
|
||
#include "NativeTestJavaInterfaceOnly.hpp" // my header | ||
#include "Marshal.hpp" | ||
|
||
namespace djinni_generated { | ||
|
||
NativeTestJavaInterfaceOnly::NativeTestJavaInterfaceOnly() : ::djinni::JniInterface<::testsuite::TestJavaInterfaceOnly, NativeTestJavaInterfaceOnly>() {} | ||
|
||
NativeTestJavaInterfaceOnly::~NativeTestJavaInterfaceOnly() = default; | ||
|
||
NativeTestJavaInterfaceOnly::JavaProxy::JavaProxy(JniType j) : Handle(::djinni::jniGetThreadEnv(), j) { } | ||
|
||
NativeTestJavaInterfaceOnly::JavaProxy::~JavaProxy() = default; | ||
|
||
bool NativeTestJavaInterfaceOnly::JavaProxy::test_method() { | ||
auto jniEnv = ::djinni::jniGetThreadEnv(); | ||
::djinni::JniLocalScope jscope(jniEnv, 10); | ||
const auto& data = ::djinni::JniClass<::djinni_generated::NativeTestJavaInterfaceOnly>::get(); | ||
auto jret = jniEnv->CallBooleanMethod(Handle::get().get(), data.method_testMethod); | ||
::djinni::jniExceptionCheck(jniEnv); | ||
return ::djinni::Bool::toCpp(jniEnv, jret); | ||
} | ||
|
||
} // namespace djinni_generated |
46 changes: 46 additions & 0 deletions
46
test-suite/generated-src/jni/NativeTestJavaInterfaceOnly.hpp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
// AUTOGENERATED FILE - DO NOT MODIFY! | ||
// This file was generated by Djinni from interface_and_abstract_class.djinni | ||
|
||
#pragma once | ||
|
||
#include "djinni_support.hpp" | ||
#include "test_java_interface_only.hpp" | ||
|
||
namespace djinni_generated { | ||
|
||
class NativeTestJavaInterfaceOnly final : ::djinni::JniInterface<::testsuite::TestJavaInterfaceOnly, NativeTestJavaInterfaceOnly> { | ||
public: | ||
using CppType = std::shared_ptr<::testsuite::TestJavaInterfaceOnly>; | ||
using CppOptType = std::shared_ptr<::testsuite::TestJavaInterfaceOnly>; | ||
using JniType = jobject; | ||
|
||
using Boxed = NativeTestJavaInterfaceOnly; | ||
|
||
~NativeTestJavaInterfaceOnly(); | ||
|
||
static CppType toCpp(JNIEnv* jniEnv, JniType j) { return ::djinni::JniClass<NativeTestJavaInterfaceOnly>::get()._fromJava(jniEnv, j); } | ||
static ::djinni::LocalRef<JniType> fromCppOpt(JNIEnv* jniEnv, const CppOptType& c) { return {jniEnv, ::djinni::JniClass<NativeTestJavaInterfaceOnly>::get()._toJava(jniEnv, c)}; } | ||
static ::djinni::LocalRef<JniType> fromCpp(JNIEnv* jniEnv, const CppType& c) { return fromCppOpt(jniEnv, c); } | ||
|
||
private: | ||
NativeTestJavaInterfaceOnly(); | ||
friend ::djinni::JniClass<NativeTestJavaInterfaceOnly>; | ||
friend ::djinni::JniInterface<::testsuite::TestJavaInterfaceOnly, NativeTestJavaInterfaceOnly>; | ||
|
||
class JavaProxy final : ::djinni::JavaProxyHandle<JavaProxy>, public ::testsuite::TestJavaInterfaceOnly | ||
{ | ||
public: | ||
JavaProxy(JniType j); | ||
~JavaProxy(); | ||
|
||
bool test_method() override; | ||
|
||
private: | ||
friend ::djinni::JniInterface<::testsuite::TestJavaInterfaceOnly, ::djinni_generated::NativeTestJavaInterfaceOnly>; | ||
}; | ||
|
||
const ::djinni::GlobalRef<jclass> clazz { ::djinni::jniFindClass("com/dropbox/djinni/test/TestJavaInterfaceOnly") }; | ||
const jmethodID method_testMethod { ::djinni::jniGetMethodID(clazz.get(), "testMethod", "()Z") }; | ||
}; | ||
|
||
} // namespace djinni_generated |
31 changes: 31 additions & 0 deletions
31
test-suite/generated-src/objc/DBTestJavaAbstractClassOnly+Private.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
// AUTOGENERATED FILE - DO NOT MODIFY! | ||
// This file was generated by Djinni from interface_and_abstract_class.djinni | ||
|
||
#include "test_java_abstract_class_only.hpp" | ||
#include <memory> | ||
|
||
static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file"); | ||
|
||
@class DBTestJavaAbstractClassOnly; | ||
|
||
namespace djinni_generated { | ||
|
||
class TestJavaAbstractClassOnly | ||
{ | ||
public: | ||
using CppType = std::shared_ptr<::testsuite::TestJavaAbstractClassOnly>; | ||
using CppOptType = std::shared_ptr<::testsuite::TestJavaAbstractClassOnly>; | ||
using ObjcType = DBTestJavaAbstractClassOnly*; | ||
|
||
using Boxed = TestJavaAbstractClassOnly; | ||
|
||
static CppType toCpp(ObjcType objc); | ||
static ObjcType fromCppOpt(const CppOptType& cpp); | ||
static ObjcType fromCpp(const CppType& cpp) { return fromCppOpt(cpp); } | ||
|
||
private: | ||
class ObjcProxy; | ||
}; | ||
|
||
} // namespace djinni_generated | ||
|
60 changes: 60 additions & 0 deletions
60
test-suite/generated-src/objc/DBTestJavaAbstractClassOnly+Private.mm
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
// AUTOGENERATED FILE - DO NOT MODIFY! | ||
// This file was generated by Djinni from interface_and_abstract_class.djinni | ||
|
||
#import "DBTestJavaAbstractClassOnly+Private.h" | ||
#import "DBTestJavaAbstractClassOnly.h" | ||
#import "DJICppWrapperCache+Private.h" | ||
#import "DJIError.h" | ||
#import "DJIMarshal+Private.h" | ||
#include <exception> | ||
#include <stdexcept> | ||
#include <utility> | ||
|
||
static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file"); | ||
|
||
@interface DBTestJavaAbstractClassOnly () | ||
|
||
- (id)initWithCpp:(const std::shared_ptr<::testsuite::TestJavaAbstractClassOnly>&)cppRef; | ||
|
||
@end | ||
|
||
@implementation DBTestJavaAbstractClassOnly { | ||
::djinni::CppProxyCache::Handle<std::shared_ptr<::testsuite::TestJavaAbstractClassOnly>> _cppRefHandle; | ||
} | ||
|
||
- (id)initWithCpp:(const std::shared_ptr<::testsuite::TestJavaAbstractClassOnly>&)cppRef | ||
{ | ||
if (self = [super init]) { | ||
_cppRefHandle.assign(cppRef); | ||
} | ||
return self; | ||
} | ||
|
||
+ (BOOL)testMethod { | ||
try { | ||
auto objcpp_result_ = ::testsuite::TestJavaAbstractClassOnly::test_method(); | ||
return ::djinni::Bool::fromCpp(objcpp_result_); | ||
} DJINNI_TRANSLATE_EXCEPTIONS() | ||
} | ||
|
||
namespace djinni_generated { | ||
|
||
auto TestJavaAbstractClassOnly::toCpp(ObjcType objc) -> CppType | ||
{ | ||
if (!objc) { | ||
return nullptr; | ||
} | ||
return objc->_cppRefHandle.get(); | ||
} | ||
|
||
auto TestJavaAbstractClassOnly::fromCppOpt(const CppOptType& cpp) -> ObjcType | ||
{ | ||
if (!cpp) { | ||
return nil; | ||
} | ||
return ::djinni::get_cpp_proxy<DBTestJavaAbstractClassOnly>(cpp); | ||
} | ||
|
||
} // namespace djinni_generated | ||
|
||
@end |
Oops, something went wrong.