Commit ebda4a20 authored by Andrew Twyman's avatar Andrew Twyman

Don't crash on leading/trailing underscores in names.

Also don't conflict with arguments named "r".
parent 5d99b8f3
...@@ -42,15 +42,15 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th ...@@ -42,15 +42,15 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th
+ (nullable TXSSortItems *)createWithListener:(nullable id<TXSTextboxListener>)listener { + (nullable TXSSortItems *)createWithListener:(nullable id<TXSTextboxListener>)listener {
try { try {
auto r = ::textsort::SortItems::create_with_listener(::djinni_generated::TextboxListener::toCpp(listener)); auto objcpp_result_ = ::textsort::SortItems::create_with_listener(::djinni_generated::TextboxListener::toCpp(listener));
return ::djinni_generated::SortItems::fromCpp(r); return ::djinni_generated::SortItems::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
+ (nonnull TXSItemList *)runSort:(nonnull TXSItemList *)items { + (nonnull TXSItemList *)runSort:(nonnull TXSItemList *)items {
try { try {
auto r = ::textsort::SortItems::run_sort(::djinni_generated::ItemList::toCpp(items)); auto objcpp_result_ = ::textsort::SortItems::run_sort(::djinni_generated::ItemList::toCpp(items));
return ::djinni_generated::ItemList::fromCpp(r); return ::djinni_generated::ItemList::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
......
...@@ -187,12 +187,12 @@ class ObjcppGenerator(spec: Spec) extends BaseObjcGenerator(spec) { ...@@ -187,12 +187,12 @@ class ObjcppGenerator(spec: Spec) extends BaseObjcGenerator(spec) {
} }
} }
}) })
val ret = m.ret.fold("")(_ => "auto r = ") val ret = m.ret.fold("")(_ => "auto objcpp_result_ = ")
val call = ret + (if (!m.static) "_cppRefHandle.get()->" else cppSelf + "::") + idCpp.method(m.ident) + "(" val call = ret + (if (!m.static) "_cppRefHandle.get()->" else cppSelf + "::") + idCpp.method(m.ident) + "("
writeAlignedCall(w, call, m.params, ")", p => objcppMarshal.toCpp(p.ty, idObjc.local(p.ident.name))) writeAlignedCall(w, call, m.params, ")", p => objcppMarshal.toCpp(p.ty, idObjc.local(p.ident.name)))
w.wl(";") w.wl(";")
m.ret.fold()(r => w.wl(s"return ${objcppMarshal.fromCpp(r, "r")};")) m.ret.fold()(r => w.wl(s"return ${objcppMarshal.fromCpp(r, "objcpp_result_")};"))
} }
} }
} }
...@@ -217,7 +217,7 @@ class ObjcppGenerator(spec: Spec) extends BaseObjcGenerator(spec) { ...@@ -217,7 +217,7 @@ class ObjcppGenerator(spec: Spec) extends BaseObjcGenerator(spec) {
val params = m.params.map(p => cppMarshal.fqParamType(p.ty) + " c_" + idCpp.local(p.ident)) val params = m.params.map(p => cppMarshal.fqParamType(p.ty) + " c_" + idCpp.local(p.ident))
w.wl(s"$ret ${idCpp.method(m.ident)}${params.mkString("(", ", ", ")")} override").braced { w.wl(s"$ret ${idCpp.method(m.ident)}${params.mkString("(", ", ", ")")} override").braced {
w.w("@autoreleasepool").braced { w.w("@autoreleasepool").braced {
val ret = m.ret.fold("")(_ => "auto r = ") val ret = m.ret.fold("")(_ => "auto objcpp_result_ = ")
val call = s"[Handle::get() ${idObjc.method(m.ident)}" val call = s"[Handle::get() ${idObjc.method(m.ident)}"
writeAlignedObjcCall(w, ret + call, m.params, "]", p => (idObjc.field(p.ident), s"(${objcppMarshal.fromCpp(p.ty, "c_" + idCpp.local(p.ident))})")) writeAlignedObjcCall(w, ret + call, m.params, "]", p => (idObjc.field(p.ident), s"(${objcppMarshal.fromCpp(p.ty, "c_" + idCpp.local(p.ident))})"))
w.wl(";") w.wl(";")
...@@ -233,7 +233,7 @@ class ObjcppGenerator(spec: Spec) extends BaseObjcGenerator(spec) { ...@@ -233,7 +233,7 @@ class ObjcppGenerator(spec: Spec) extends BaseObjcGenerator(spec) {
w.wl(s"""throw std::invalid_argument("$exceptionReason");""") w.wl(s"""throw std::invalid_argument("$exceptionReason");""")
} }
} }
w.wl(s"return ${objcppMarshal.toCpp(ty, "r")};") w.wl(s"return ${objcppMarshal.toCpp(ty, "objcpp_result_")};")
}) })
} }
} }
......
...@@ -83,7 +83,7 @@ package object generatorTools { ...@@ -83,7 +83,7 @@ package object generatorTools {
if (s.isEmpty) s else ", " + s if (s.isEmpty) s else ", " + s
} }
def q(s: String) = '"' + s + '"' def q(s: String) = '"' + s + '"'
def firstUpper(token: String) = token.charAt(0).toUpper + token.substring(1) def firstUpper(token: String) = if (token.isEmpty()) token else token.charAt(0).toUpper + token.substring(1)
type IdentConverter = String => String type IdentConverter = String => String
......
...@@ -13,3 +13,4 @@ ...@@ -13,3 +13,4 @@
@import "multiple_inheritance.djinni" @import "multiple_inheritance.djinni"
@import "single_language_interfaces.djinni" @import "single_language_interfaces.djinni"
@import "extended_record.djinni" @import "extended_record.djinni"
@import "varnames.djinni"
# Underscore is used as a separator in Djinni names, so we don't really
# anticipate it to be used as a prefix/suffix. Some name styles behave
# badly when it is. However this test case ensures we at least don't crash.
_varname_record_ = record {
_field_: i8;
}
_varname_interface_ = interface +c {
_rmethod_(r: _varname_record_): _varname_record_;
_imethod_(i: _varname_interface_): _varname_interface_;
}
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from varnames.djinni
#pragma once
#include <memory>
namespace testsuite {
struct VarnameRecord;
class VarnameInterface {
public:
virtual ~VarnameInterface() {}
virtual VarnameRecord _rmethod_(const VarnameRecord & r) = 0;
virtual std::shared_ptr<VarnameInterface> _imethod_(const std::shared_ptr<VarnameInterface> & i) = 0;
};
} // namespace testsuite
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from varnames.djinni
#pragma once
#include <cstdint>
#include <utility>
namespace testsuite {
/**
* Underscore is used as a separator in Djinni names, so we don't really
* anticipate it to be used as a prefix/suffix. Some name styles behave
* badly when it is. However this test case ensures we at least don't crash.
*/
struct VarnameRecord final {
int8_t _field_;
VarnameRecord(int8_t _field__)
: _field_(std::move(_field__))
{}
};
} // namespace testsuite
...@@ -15,6 +15,7 @@ djinni/constants.djinni ...@@ -15,6 +15,7 @@ djinni/constants.djinni
djinni/multiple_inheritance.djinni djinni/multiple_inheritance.djinni
djinni/single_language_interfaces.djinni djinni/single_language_interfaces.djinni
djinni/extended_record.djinni djinni/extended_record.djinni
djinni/varnames.djinni
djinni/date.djinni djinni/date.djinni
djinni/date.yaml djinni/date.yaml
djinni/duration.djinni djinni/duration.djinni
......
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from varnames.djinni
package com.dropbox.djinni.test;
import java.util.concurrent.atomic.AtomicBoolean;
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
public abstract class VarnameInterface {
@Nonnull
public abstract VarnameRecord Rmethod(@Nonnull VarnameRecord r);
@CheckForNull
public abstract VarnameInterface Imethod(@CheckForNull VarnameInterface i);
private static final class CppProxy extends VarnameInterface
{
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;
}
private native void nativeDestroy(long nativeRef);
public void destroy()
{
boolean destroyed = this.destroyed.getAndSet(true);
if (!destroyed) nativeDestroy(this.nativeRef);
}
protected void finalize() throws java.lang.Throwable
{
destroy();
super.finalize();
}
@Override
public VarnameRecord Rmethod(VarnameRecord r)
{
assert !this.destroyed.get() : "trying to use a destroyed object";
return native_Rmethod(this.nativeRef, r);
}
private native VarnameRecord native_Rmethod(long _nativeRef, VarnameRecord r);
@Override
public VarnameInterface Imethod(VarnameInterface i)
{
assert !this.destroyed.get() : "trying to use a destroyed object";
return native_Imethod(this.nativeRef, i);
}
private native VarnameInterface native_Imethod(long _nativeRef, VarnameInterface i);
}
}
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from varnames.djinni
package com.dropbox.djinni.test;
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
/**
* Underscore is used as a separator in Djinni names, so we don't really
* anticipate it to be used as a prefix/suffix. Some name styles behave
* badly when it is. However this test case ensures we at least don't crash.
*/
public class VarnameRecord {
/*package*/ final byte mField;
public VarnameRecord(
byte Field) {
this.mField = Field;
}
public byte getField() {
return mField;
}
@Override
public String toString() {
return "VarnameRecord{" +
"mField=" + mField +
"}";
}
}
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from varnames.djinni
#include "NativeVarnameInterface.hpp" // my header
#include "NativeVarnameRecord.hpp"
namespace djinni_generated {
NativeVarnameInterface::NativeVarnameInterface() : ::djinni::JniInterface<::testsuite::VarnameInterface, NativeVarnameInterface>("com/dropbox/djinni/test/VarnameInterface$CppProxy") {}
NativeVarnameInterface::~NativeVarnameInterface() = default;
CJNIEXPORT void JNICALL Java_com_dropbox_djinni_test_VarnameInterface_00024CppProxy_nativeDestroy(JNIEnv* jniEnv, jobject /*this*/, jlong nativeRef)
{
try {
DJINNI_FUNCTION_PROLOGUE1(jniEnv, nativeRef);
delete reinterpret_cast<::djinni::CppProxyHandle<::testsuite::VarnameInterface>*>(nativeRef);
} JNI_TRANSLATE_EXCEPTIONS_RETURN(jniEnv, )
}
CJNIEXPORT jobject JNICALL Java_com_dropbox_djinni_test_VarnameInterface_00024CppProxy_native_1Rmethod(JNIEnv* jniEnv, jobject /*this*/, jlong nativeRef, jobject j_r)
{
try {
DJINNI_FUNCTION_PROLOGUE1(jniEnv, nativeRef);
const auto& ref = ::djinni::objectFromHandleAddress<::testsuite::VarnameInterface>(nativeRef);
auto r = ref->_rmethod_(::djinni_generated::NativeVarnameRecord::toCpp(jniEnv, j_r));
return ::djinni::release(::djinni_generated::NativeVarnameRecord::fromCpp(jniEnv, r));
} JNI_TRANSLATE_EXCEPTIONS_RETURN(jniEnv, 0 /* value doesn't matter */)
}
CJNIEXPORT jobject JNICALL Java_com_dropbox_djinni_test_VarnameInterface_00024CppProxy_native_1Imethod(JNIEnv* jniEnv, jobject /*this*/, jlong nativeRef, jobject j_i)
{
try {
DJINNI_FUNCTION_PROLOGUE1(jniEnv, nativeRef);
const auto& ref = ::djinni::objectFromHandleAddress<::testsuite::VarnameInterface>(nativeRef);
auto r = ref->_imethod_(::djinni_generated::NativeVarnameInterface::toCpp(jniEnv, j_i));
return ::djinni::release(::djinni_generated::NativeVarnameInterface::fromCpp(jniEnv, r));
} JNI_TRANSLATE_EXCEPTIONS_RETURN(jniEnv, 0 /* value doesn't matter */)
}
} // namespace djinni_generated
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from varnames.djinni
#pragma once
#include "_varname_interface_.hpp"
#include "djinni_support.hpp"
namespace djinni_generated {
class NativeVarnameInterface final : ::djinni::JniInterface<::testsuite::VarnameInterface, NativeVarnameInterface> {
public:
using CppType = std::shared_ptr<::testsuite::VarnameInterface>;
using CppOptType = std::shared_ptr<::testsuite::VarnameInterface>;
using JniType = jobject;
using Boxed = NativeVarnameInterface;
~NativeVarnameInterface();
static CppType toCpp(JNIEnv* jniEnv, JniType j) { return ::djinni::JniClass<NativeVarnameInterface>::get()._fromJava(jniEnv, j); }
static ::djinni::LocalRef<JniType> fromCppOpt(JNIEnv* jniEnv, const CppOptType& c) { return {jniEnv, ::djinni::JniClass<NativeVarnameInterface>::get()._toJava(jniEnv, c)}; }
static ::djinni::LocalRef<JniType> fromCpp(JNIEnv* jniEnv, const CppType& c) { return fromCppOpt(jniEnv, c); }
private:
NativeVarnameInterface();
friend ::djinni::JniClass<NativeVarnameInterface>;
friend ::djinni::JniInterface<::testsuite::VarnameInterface, NativeVarnameInterface>;
};
} // namespace djinni_generated
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from varnames.djinni
#include "NativeVarnameRecord.hpp" // my header
#include "Marshal.hpp"
namespace djinni_generated {
NativeVarnameRecord::NativeVarnameRecord() = default;
NativeVarnameRecord::~NativeVarnameRecord() = default;
auto NativeVarnameRecord::fromCpp(JNIEnv* jniEnv, const CppType& c) -> ::djinni::LocalRef<JniType> {
const auto& data = ::djinni::JniClass<NativeVarnameRecord>::get();
auto r = ::djinni::LocalRef<JniType>{jniEnv->NewObject(data.clazz.get(), data.jconstructor,
::djinni::get(::djinni::I8::fromCpp(jniEnv, c._field_)))};
::djinni::jniExceptionCheck(jniEnv);
return r;
}
auto NativeVarnameRecord::toCpp(JNIEnv* jniEnv, JniType j) -> CppType {
::djinni::JniLocalScope jscope(jniEnv, 2);
assert(j != nullptr);
const auto& data = ::djinni::JniClass<NativeVarnameRecord>::get();
return {::djinni::I8::toCpp(jniEnv, jniEnv->GetByteField(j, data.field_mField))};
}
} // namespace djinni_generated
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from varnames.djinni
#pragma once
#include "_varname_record_.hpp"
#include "djinni_support.hpp"
namespace djinni_generated {
class NativeVarnameRecord final {
public:
using CppType = ::testsuite::VarnameRecord;
using JniType = jobject;
using Boxed = NativeVarnameRecord;
~NativeVarnameRecord();
static CppType toCpp(JNIEnv* jniEnv, JniType j);
static ::djinni::LocalRef<JniType> fromCpp(JNIEnv* jniEnv, const CppType& c);
private:
NativeVarnameRecord();
friend ::djinni::JniClass<NativeVarnameRecord>;
const ::djinni::GlobalRef<jclass> clazz { ::djinni::jniFindClass("com/dropbox/djinni/test/VarnameRecord") };
const jmethodID jconstructor { ::djinni::jniGetMethodID(clazz.get(), "<init>", "(B)V") };
const jfieldID field_mField { ::djinni::jniGetFieldID(clazz.get(), "mField", "B") };
};
} // namespace djinni_generated
...@@ -21,40 +21,40 @@ public: ...@@ -21,40 +21,40 @@ public:
::testsuite::ClientReturnedRecord get_record(int64_t c_record_id, const std::string & c_utf8string, const std::experimental::optional<std::string> & c_misc) override ::testsuite::ClientReturnedRecord get_record(int64_t c_record_id, const std::string & c_utf8string, const std::experimental::optional<std::string> & c_misc) override
{ {
@autoreleasepool { @autoreleasepool {
auto r = [Handle::get() getRecord:(::djinni::I64::fromCpp(c_record_id)) auto objcpp_result_ = [Handle::get() getRecord:(::djinni::I64::fromCpp(c_record_id))
utf8string:(::djinni::String::fromCpp(c_utf8string)) utf8string:(::djinni::String::fromCpp(c_utf8string))
misc:(::djinni::Optional<std::experimental::optional, ::djinni::String>::fromCpp(c_misc))]; misc:(::djinni::Optional<std::experimental::optional, ::djinni::String>::fromCpp(c_misc))];
return ::djinni_generated::ClientReturnedRecord::toCpp(r); return ::djinni_generated::ClientReturnedRecord::toCpp(objcpp_result_);
} }
} }
double identifier_check(const std::vector<uint8_t> & c_data, int32_t c_r, int64_t c_jret) override double identifier_check(const std::vector<uint8_t> & c_data, int32_t c_r, int64_t c_jret) override
{ {
@autoreleasepool { @autoreleasepool {
auto r = [Handle::get() identifierCheck:(::djinni::Binary::fromCpp(c_data)) auto objcpp_result_ = [Handle::get() identifierCheck:(::djinni::Binary::fromCpp(c_data))
r:(::djinni::I32::fromCpp(c_r)) r:(::djinni::I32::fromCpp(c_r))
jret:(::djinni::I64::fromCpp(c_jret))]; jret:(::djinni::I64::fromCpp(c_jret))];
return ::djinni::F64::toCpp(r); return ::djinni::F64::toCpp(objcpp_result_);
} }
} }
std::string return_str() override std::string return_str() override
{ {
@autoreleasepool { @autoreleasepool {
auto r = [Handle::get() returnStr]; auto objcpp_result_ = [Handle::get() returnStr];
return ::djinni::String::toCpp(r); return ::djinni::String::toCpp(objcpp_result_);
} }
} }
std::string meth_taking_interface(const std::shared_ptr<::testsuite::ClientInterface> & c_i) override std::string meth_taking_interface(const std::shared_ptr<::testsuite::ClientInterface> & c_i) override
{ {
@autoreleasepool { @autoreleasepool {
auto r = [Handle::get() methTakingInterface:(::djinni_generated::ClientInterface::fromCpp(c_i))]; auto objcpp_result_ = [Handle::get() methTakingInterface:(::djinni_generated::ClientInterface::fromCpp(c_i))];
return ::djinni::String::toCpp(r); return ::djinni::String::toCpp(objcpp_result_);
} }
} }
std::string meth_taking_optional_interface(const std::shared_ptr<::testsuite::ClientInterface> & c_i) override std::string meth_taking_optional_interface(const std::shared_ptr<::testsuite::ClientInterface> & c_i) override
{ {
@autoreleasepool { @autoreleasepool {
auto r = [Handle::get() methTakingOptionalInterface:(::djinni::Optional<std::experimental::optional, ::djinni_generated::ClientInterface>::fromCpp(c_i))]; auto objcpp_result_ = [Handle::get() methTakingOptionalInterface:(::djinni::Optional<std::experimental::optional, ::djinni_generated::ClientInterface>::fromCpp(c_i))];
return ::djinni::String::toCpp(r); return ::djinni::String::toCpp(objcpp_result_);
} }
} }
}; };
......
...@@ -33,15 +33,15 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th ...@@ -33,15 +33,15 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th
- (nullable DBConflict *)Conflict { - (nullable DBConflict *)Conflict {
try { try {
auto r = _cppRefHandle.get()->Conflict(); auto objcpp_result_ = _cppRefHandle.get()->Conflict();
return ::djinni_generated::Conflict::fromCpp(r); return ::djinni_generated::Conflict::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
- (BOOL)conflictArg:(nonnull NSSet<DBConflict *> *)cs { - (BOOL)conflictArg:(nonnull NSSet<DBConflict *> *)cs {
try { try {
auto r = _cppRefHandle.get()->conflict_arg(::djinni::Set<::djinni_generated::Conflict>::toCpp(cs)); auto objcpp_result_ = _cppRefHandle.get()->conflict_arg(::djinni::Set<::djinni_generated::Conflict>::toCpp(cs));
return ::djinni::Bool::fromCpp(r); return ::djinni::Bool::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
......
...@@ -32,15 +32,15 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th ...@@ -32,15 +32,15 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th
- (int32_t)throwAnException { - (int32_t)throwAnException {
try { try {
auto r = _cppRefHandle.get()->throw_an_exception(); auto objcpp_result_ = _cppRefHandle.get()->throw_an_exception();
return ::djinni::I32::fromCpp(r); return ::djinni::I32::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
+ (nullable DBCppException *)get { + (nullable DBCppException *)get {
try { try {
auto r = ::testsuite::CppException::get(); auto objcpp_result_ = ::testsuite::CppException::get();
return ::djinni_generated::CppException::fromCpp(r); return ::djinni_generated::CppException::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
......
...@@ -34,36 +34,36 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th ...@@ -34,36 +34,36 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th
- (DBColor)e:(DBColor)e { - (DBColor)e:(DBColor)e {
try { try {
auto r = _cppRefHandle.get()->e(::djinni::Enum<::testsuite::color, DBColor>::toCpp(e)); auto objcpp_result_ = _cppRefHandle.get()->e(::djinni::Enum<::testsuite::color, DBColor>::toCpp(e));
return ::djinni::Enum<::testsuite::color, DBColor>::fromCpp(r); return ::djinni::Enum<::testsuite::color, DBColor>::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
- (nullable NSNumber *)o:(nullable NSNumber *)o { - (nullable NSNumber *)o:(nullable NSNumber *)o {
try { try {
auto r = _cppRefHandle.get()->o(::djinni::Optional<std::experimental::optional, ::djinni::Enum<::testsuite::color, DBColor>>::toCpp(o)); auto objcpp_result_ = _cppRefHandle.get()->o(::djinni::Optional<std::experimental::optional, ::djinni::Enum<::testsuite::color, DBColor>>::toCpp(o));
return ::djinni::Optional<std::experimental::optional, ::djinni::Enum<::testsuite::color, DBColor>>::fromCpp(r); return ::djinni::Optional<std::experimental::optional, ::djinni::Enum<::testsuite::color, DBColor>>::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
- (nonnull NSArray<NSNumber *> *)l:(nonnull NSArray<NSNumber *> *)l { - (nonnull NSArray<NSNumber *> *)l:(nonnull NSArray<NSNumber *> *)l {
try { try {
auto r = _cppRefHandle.get()->l(::djinni::List<::djinni::Enum<::testsuite::color, DBColor>>::toCpp(l)); auto objcpp_result_ = _cppRefHandle.get()->l(::djinni::List<::djinni::Enum<::testsuite::color, DBColor>>::toCpp(l));
return ::djinni::List<::djinni::Enum<::testsuite::color, DBColor>>::fromCpp(r); return ::djinni::List<::djinni::Enum<::testsuite::color, DBColor>>::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
- (nonnull NSSet<NSNumber *> *)s:(nonnull NSSet<NSNumber *> *)s { - (nonnull NSSet<NSNumber *> *)s:(nonnull NSSet<NSNumber *> *)s {
try { try {
auto r = _cppRefHandle.get()->s(::djinni::Set<::djinni::Enum<::testsuite::color, DBColor>>::toCpp(s)); auto objcpp_result_ = _cppRefHandle.get()->s(::djinni::Set<::djinni::Enum<::testsuite::color, DBColor>>::toCpp(s));
return ::djinni::Set<::djinni::Enum<::testsuite::color, DBColor>>::fromCpp(r); return ::djinni::Set<::djinni::Enum<::testsuite::color, DBColor>>::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
- (nonnull NSDictionary<NSNumber *, NSNumber *> *)m:(nonnull NSDictionary<NSNumber *, NSNumber *> *)m { - (nonnull NSDictionary<NSNumber *, NSNumber *> *)m:(nonnull NSDictionary<NSNumber *, NSNumber *> *)m {
try { try {
auto r = _cppRefHandle.get()->m(::djinni::Map<::djinni::Enum<::testsuite::color, DBColor>, ::djinni::Enum<::testsuite::color, DBColor>>::toCpp(m)); auto objcpp_result_ = _cppRefHandle.get()->m(::djinni::Map<::djinni::Enum<::testsuite::color, DBColor>, ::djinni::Enum<::testsuite::color, DBColor>>::toCpp(m));
return ::djinni::Map<::djinni::Enum<::testsuite::color, DBColor>, ::djinni::Enum<::testsuite::color, DBColor>>::fromCpp(r); return ::djinni::Map<::djinni::Enum<::testsuite::color, DBColor>, ::djinni::Enum<::testsuite::color, DBColor>>::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
...@@ -78,36 +78,36 @@ public: ...@@ -78,36 +78,36 @@ public:
::testsuite::color e(::testsuite::color c_e) override ::testsuite::color e(::testsuite::color c_e) override
{ {
@autoreleasepool { @autoreleasepool {
auto r = [Handle::get() e:(::djinni::Enum<::testsuite::color, DBColor>::fromCpp(c_e))]; auto objcpp_result_ = [Handle::get() e:(::djinni::Enum<::testsuite::color, DBColor>::fromCpp(c_e))];
return ::djinni::Enum<::testsuite::color, DBColor>::toCpp(r); return ::djinni::Enum<::testsuite::color, DBColor>::toCpp(objcpp_result_);
} }
} }
std::experimental::optional<::testsuite::color> o(std::experimental::optional<::testsuite::color> c_o) override std::experimental::optional<::testsuite::color> o(std::experimental::optional<::testsuite::color> c_o) override
{ {
@autoreleasepool { @autoreleasepool {
auto r = [Handle::get() o:(::djinni::Optional<std::experimental::optional, ::djinni::Enum<::testsuite::color, DBColor>>::fromCpp(c_o))]; auto objcpp_result_ = [Handle::get() o:(::djinni::Optional<std::experimental::optional, ::djinni::Enum<::testsuite::color, DBColor>>::fromCpp(c_o))];
return ::djinni::Optional<std::experimental::optional, ::djinni::Enum<::testsuite::color, DBColor>>::toCpp(r); return ::djinni::Optional<std::experimental::optional, ::djinni::Enum<::testsuite::color, DBColor>>::toCpp(objcpp_result_);
} }
} }
std::vector<::testsuite::color> l(const std::vector<::testsuite::color> & c_l) override std::vector<::testsuite::color> l(const std::vector<::testsuite::color> & c_l) override
{ {
@autoreleasepool { @autoreleasepool {
auto r = [Handle::get() l:(::djinni::List<::djinni::Enum<::testsuite::color, DBColor>>::fromCpp(c_l))]; auto objcpp_result_ = [Handle::get() l:(::djinni::List<::djinni::Enum<::testsuite::color, DBColor>>::fromCpp(c_l))];
return ::djinni::List<::djinni::Enum<::testsuite::color, DBColor>>::toCpp(r); return ::djinni::List<::djinni::Enum<::testsuite::color, DBColor>>::toCpp(objcpp_result_);
} }
} }
std::unordered_set<::testsuite::color> s(const std::unordered_set<::testsuite::color> & c_s) override std::unordered_set<::testsuite::color> s(const std::unordered_set<::testsuite::color> & c_s) override
{ {
@autoreleasepool { @autoreleasepool {
auto r = [Handle::get() s:(::djinni::Set<::djinni::Enum<::testsuite::color, DBColor>>::fromCpp(c_s))]; auto objcpp_result_ = [Handle::get() s:(::djinni::Set<::djinni::Enum<::testsuite::color, DBColor>>::fromCpp(c_s))];
return ::djinni::Set<::djinni::Enum<::testsuite::color, DBColor>>::toCpp(r); return ::djinni::Set<::djinni::Enum<::testsuite::color, DBColor>>::toCpp(objcpp_result_);
} }
} }
std::unordered_map<::testsuite::color, ::testsuite::color> m(const std::unordered_map<::testsuite::color, ::testsuite::color> & c_m) override std::unordered_map<::testsuite::color, ::testsuite::color> m(const std::unordered_map<::testsuite::color, ::testsuite::color> & c_m) override
{ {
@autoreleasepool { @autoreleasepool {
auto r = [Handle::get() m:(::djinni::Map<::djinni::Enum<::testsuite::color, DBColor>, ::djinni::Enum<::testsuite::color, DBColor>>::fromCpp(c_m))]; auto objcpp_result_ = [Handle::get() m:(::djinni::Map<::djinni::Enum<::testsuite::color, DBColor>, ::djinni::Enum<::testsuite::color, DBColor>>::fromCpp(c_m))];
return ::djinni::Map<::djinni::Enum<::testsuite::color, DBColor>, ::djinni::Enum<::testsuite::color, DBColor>>::toCpp(r); return ::djinni::Map<::djinni::Enum<::testsuite::color, DBColor>, ::djinni::Enum<::testsuite::color, DBColor>>::toCpp(objcpp_result_);
} }
} }
}; };
......
...@@ -33,8 +33,8 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th ...@@ -33,8 +33,8 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th
- (nonnull DBClientReturnedRecord *)foo:(nullable id<DBClientInterface>)i { - (nonnull DBClientReturnedRecord *)foo:(nullable id<DBClientInterface>)i {
try { try {
auto r = _cppRefHandle.get()->foo(::djinni_generated::ClientInterface::toCpp(i)); auto objcpp_result_ = _cppRefHandle.get()->foo(::djinni_generated::ClientInterface::toCpp(i));
return ::djinni_generated::ClientReturnedRecord::fromCpp(r); return ::djinni_generated::ClientReturnedRecord::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
......
...@@ -21,8 +21,8 @@ public: ...@@ -21,8 +21,8 @@ public:
::ExternRecordWithDerivings foo(const std::shared_ptr<::testsuite::TestHelpers> & c_i) override ::ExternRecordWithDerivings foo(const std::shared_ptr<::testsuite::TestHelpers> & c_i) override
{ {
@autoreleasepool { @autoreleasepool {
auto r = [Handle::get() foo:(::djinni_generated::TestHelpers::fromCpp(c_i))]; auto objcpp_result_ = [Handle::get() foo:(::djinni_generated::TestHelpers::fromCpp(c_i))];
return ::djinni_generated::ExternRecordWithDerivings::toCpp(r); return ::djinni_generated::ExternRecordWithDerivings::toCpp(objcpp_result_);
} }
} }
}; };
......
...@@ -34,9 +34,9 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th ...@@ -34,9 +34,9 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th
+ (nullable DBListenerCaller *)init:(nullable id<DBFirstListener>)firstL + (nullable DBListenerCaller *)init:(nullable id<DBFirstListener>)firstL
secondL:(nullable id<DBSecondListener>)secondL { secondL:(nullable id<DBSecondListener>)secondL {
try { try {
auto r = ::testsuite::ListenerCaller::init(::djinni_generated::FirstListener::toCpp(firstL), auto objcpp_result_ = ::testsuite::ListenerCaller::init(::djinni_generated::FirstListener::toCpp(firstL),
::djinni_generated::SecondListener::toCpp(secondL)); ::djinni_generated::SecondListener::toCpp(secondL));
return ::djinni_generated::ListenerCaller::fromCpp(r); return ::djinni_generated::ListenerCaller::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
......
...@@ -32,15 +32,15 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th ...@@ -32,15 +32,15 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th
+ (nullable DBReturnOne *)getInstance { + (nullable DBReturnOne *)getInstance {
try { try {
auto r = ::testsuite::ReturnOne::get_instance(); auto objcpp_result_ = ::testsuite::ReturnOne::get_instance();
return ::djinni_generated::ReturnOne::fromCpp(r); return ::djinni_generated::ReturnOne::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
- (int8_t)returnOne { - (int8_t)returnOne {
try { try {
auto r = _cppRefHandle.get()->return_one(); auto objcpp_result_ = _cppRefHandle.get()->return_one();
return ::djinni::I8::fromCpp(r); return ::djinni::I8::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
......
...@@ -32,15 +32,15 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th ...@@ -32,15 +32,15 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th
+ (nullable DBReturnTwo *)getInstance { + (nullable DBReturnTwo *)getInstance {
try { try {
auto r = ::testsuite::ReturnTwo::get_instance(); auto objcpp_result_ = ::testsuite::ReturnTwo::get_instance();
return ::djinni_generated::ReturnTwo::fromCpp(r); return ::djinni_generated::ReturnTwo::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
- (int8_t)returnTwo { - (int8_t)returnTwo {
try { try {
auto r = _cppRefHandle.get()->return_two(); auto objcpp_result_ = _cppRefHandle.get()->return_two();
return ::djinni::I8::fromCpp(r); return ::djinni::I8::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
......
...@@ -32,29 +32,29 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th ...@@ -32,29 +32,29 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th
- (nonnull NSString *)returnStr { - (nonnull NSString *)returnStr {
try { try {
auto r = _cppRefHandle.get()->return_str(); auto objcpp_result_ = _cppRefHandle.get()->return_str();
return ::djinni::String::fromCpp(r); return ::djinni::String::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
- (nonnull NSString *)methTakingInterface:(nullable DBReverseClientInterface *)i { - (nonnull NSString *)methTakingInterface:(nullable DBReverseClientInterface *)i {
try { try {
auto r = _cppRefHandle.get()->meth_taking_interface(::djinni_generated::ReverseClientInterface::toCpp(i)); auto objcpp_result_ = _cppRefHandle.get()->meth_taking_interface(::djinni_generated::ReverseClientInterface::toCpp(i));
return ::djinni::String::fromCpp(r); return ::djinni::String::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
- (nonnull NSString *)methTakingOptionalInterface:(nullable DBReverseClientInterface *)i { - (nonnull NSString *)methTakingOptionalInterface:(nullable DBReverseClientInterface *)i {
try { try {
auto r = _cppRefHandle.get()->meth_taking_optional_interface(::djinni::Optional<std::experimental::optional, ::djinni_generated::ReverseClientInterface>::toCpp(i)); auto objcpp_result_ = _cppRefHandle.get()->meth_taking_optional_interface(::djinni::Optional<std::experimental::optional, ::djinni_generated::ReverseClientInterface>::toCpp(i));
return ::djinni::String::fromCpp(r); return ::djinni::String::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
+ (nullable DBReverseClientInterface *)create { + (nullable DBReverseClientInterface *)create {
try { try {
auto r = ::testsuite::ReverseClientInterface::create(); auto objcpp_result_ = ::testsuite::ReverseClientInterface::create();
return ::djinni_generated::ReverseClientInterface::fromCpp(r); return ::djinni_generated::ReverseClientInterface::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
......
...@@ -33,141 +33,141 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th ...@@ -33,141 +33,141 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th
+ (nonnull NSString *)hoursString:(NSTimeInterval)dt { + (nonnull NSString *)hoursString:(NSTimeInterval)dt {
try { try {
auto r = ::testsuite::TestDuration::hoursString(::djinni::Duration<::djinni::I32, ::djinni::Duration_h>::toCpp(dt)); auto objcpp_result_ = ::testsuite::TestDuration::hoursString(::djinni::Duration<::djinni::I32, ::djinni::Duration_h>::toCpp(dt));
return ::djinni::String::fromCpp(r); return ::djinni::String::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
+ (nonnull NSString *)minutesString:(NSTimeInterval)dt { + (nonnull NSString *)minutesString:(NSTimeInterval)dt {
try { try {
auto r = ::testsuite::TestDuration::minutesString(::djinni::Duration<::djinni::I32, ::djinni::Duration_min>::toCpp(dt)); auto objcpp_result_ = ::testsuite::TestDuration::minutesString(::djinni::Duration<::djinni::I32, ::djinni::Duration_min>::toCpp(dt));
return ::djinni::String::fromCpp(r); return ::djinni::String::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
+ (nonnull NSString *)secondsString:(NSTimeInterval)dt { + (nonnull NSString *)secondsString:(NSTimeInterval)dt {
try { try {
auto r = ::testsuite::TestDuration::secondsString(::djinni::Duration<::djinni::I32, ::djinni::Duration_s>::toCpp(dt)); auto objcpp_result_ = ::testsuite::TestDuration::secondsString(::djinni::Duration<::djinni::I32, ::djinni::Duration_s>::toCpp(dt));
return ::djinni::String::fromCpp(r); return ::djinni::String::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
+ (nonnull NSString *)millisString:(NSTimeInterval)dt { + (nonnull NSString *)millisString:(NSTimeInterval)dt {
try { try {
auto r = ::testsuite::TestDuration::millisString(::djinni::Duration<::djinni::I32, ::djinni::Duration_ms>::toCpp(dt)); auto objcpp_result_ = ::testsuite::TestDuration::millisString(::djinni::Duration<::djinni::I32, ::djinni::Duration_ms>::toCpp(dt));
return ::djinni::String::fromCpp(r); return ::djinni::String::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
+ (nonnull NSString *)microsString:(NSTimeInterval)dt { + (nonnull NSString *)microsString:(NSTimeInterval)dt {
try { try {
auto r = ::testsuite::TestDuration::microsString(::djinni::Duration<::djinni::I32, ::djinni::Duration_us>::toCpp(dt)); auto objcpp_result_ = ::testsuite::TestDuration::microsString(::djinni::Duration<::djinni::I32, ::djinni::Duration_us>::toCpp(dt));
return ::djinni::String::fromCpp(r); return ::djinni::String::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
+ (nonnull NSString *)nanosString:(NSTimeInterval)dt { + (nonnull NSString *)nanosString:(NSTimeInterval)dt {
try { try {
auto r = ::testsuite::TestDuration::nanosString(::djinni::Duration<::djinni::I32, ::djinni::Duration_ns>::toCpp(dt)); auto objcpp_result_ = ::testsuite::TestDuration::nanosString(::djinni::Duration<::djinni::I32, ::djinni::Duration_ns>::toCpp(dt));
return ::djinni::String::fromCpp(r); return ::djinni::String::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
+ (NSTimeInterval)hours:(int32_t)count { + (NSTimeInterval)hours:(int32_t)count {
try { try {
auto r = ::testsuite::TestDuration::hours(::djinni::I32::toCpp(count)); auto objcpp_result_ = ::testsuite::TestDuration::hours(::djinni::I32::toCpp(count));
return ::djinni::Duration<::djinni::I32, ::djinni::Duration_h>::fromCpp(r); return ::djinni::Duration<::djinni::I32, ::djinni::Duration_h>::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
+ (NSTimeInterval)minutes:(int32_t)count { + (NSTimeInterval)minutes:(int32_t)count {
try { try {
auto r = ::testsuite::TestDuration::minutes(::djinni::I32::toCpp(count)); auto objcpp_result_ = ::testsuite::TestDuration::minutes(::djinni::I32::toCpp(count));
return ::djinni::Duration<::djinni::I32, ::djinni::Duration_min>::fromCpp(r); return ::djinni::Duration<::djinni::I32, ::djinni::Duration_min>::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
+ (NSTimeInterval)seconds:(int32_t)count { + (NSTimeInterval)seconds:(int32_t)count {
try { try {
auto r = ::testsuite::TestDuration::seconds(::djinni::I32::toCpp(count)); auto objcpp_result_ = ::testsuite::TestDuration::seconds(::djinni::I32::toCpp(count));
return ::djinni::Duration<::djinni::I32, ::djinni::Duration_s>::fromCpp(r); return ::djinni::Duration<::djinni::I32, ::djinni::Duration_s>::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
+ (NSTimeInterval)millis:(int32_t)count { + (NSTimeInterval)millis:(int32_t)count {
try { try {
auto r = ::testsuite::TestDuration::millis(::djinni::I32::toCpp(count)); auto objcpp_result_ = ::testsuite::TestDuration::millis(::djinni::I32::toCpp(count));
return ::djinni::Duration<::djinni::I32, ::djinni::Duration_ms>::fromCpp(r); return ::djinni::Duration<::djinni::I32, ::djinni::Duration_ms>::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
+ (NSTimeInterval)micros:(int32_t)count { + (NSTimeInterval)micros:(int32_t)count {
try { try {
auto r = ::testsuite::TestDuration::micros(::djinni::I32::toCpp(count)); auto objcpp_result_ = ::testsuite::TestDuration::micros(::djinni::I32::toCpp(count));
return ::djinni::Duration<::djinni::I32, ::djinni::Duration_us>::fromCpp(r); return ::djinni::Duration<::djinni::I32, ::djinni::Duration_us>::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
+ (NSTimeInterval)nanos:(int32_t)count { + (NSTimeInterval)nanos:(int32_t)count {
try { try {
auto r = ::testsuite::TestDuration::nanos(::djinni::I32::toCpp(count)); auto objcpp_result_ = ::testsuite::TestDuration::nanos(::djinni::I32::toCpp(count));
return ::djinni::Duration<::djinni::I32, ::djinni::Duration_ns>::fromCpp(r); return ::djinni::Duration<::djinni::I32, ::djinni::Duration_ns>::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
+ (NSTimeInterval)hoursf:(double)count { + (NSTimeInterval)hoursf:(double)count {
try { try {
auto r = ::testsuite::TestDuration::hoursf(::djinni::F64::toCpp(count)); auto objcpp_result_ = ::testsuite::TestDuration::hoursf(::djinni::F64::toCpp(count));
return ::djinni::Duration<::djinni::F64, ::djinni::Duration_h>::fromCpp(r); return ::djinni::Duration<::djinni::F64, ::djinni::Duration_h>::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
+ (NSTimeInterval)minutesf:(double)count { + (NSTimeInterval)minutesf:(double)count {
try { try {
auto r = ::testsuite::TestDuration::minutesf(::djinni::F64::toCpp(count)); auto objcpp_result_ = ::testsuite::TestDuration::minutesf(::djinni::F64::toCpp(count));
return ::djinni::Duration<::djinni::F64, ::djinni::Duration_min>::fromCpp(r); return ::djinni::Duration<::djinni::F64, ::djinni::Duration_min>::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
+ (NSTimeInterval)secondsf:(double)count { + (NSTimeInterval)secondsf:(double)count {
try { try {
auto r = ::testsuite::TestDuration::secondsf(::djinni::F64::toCpp(count)); auto objcpp_result_ = ::testsuite::TestDuration::secondsf(::djinni::F64::toCpp(count));
return ::djinni::Duration<::djinni::F64, ::djinni::Duration_s>::fromCpp(r); return ::djinni::Duration<::djinni::F64, ::djinni::Duration_s>::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
+ (NSTimeInterval)millisf:(double)count { + (NSTimeInterval)millisf:(double)count {
try { try {
auto r = ::testsuite::TestDuration::millisf(::djinni::F64::toCpp(count)); auto objcpp_result_ = ::testsuite::TestDuration::millisf(::djinni::F64::toCpp(count));
return ::djinni::Duration<::djinni::F64, ::djinni::Duration_ms>::fromCpp(r); return ::djinni::Duration<::djinni::F64, ::djinni::Duration_ms>::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
+ (NSTimeInterval)microsf:(double)count { + (NSTimeInterval)microsf:(double)count {
try { try {
auto r = ::testsuite::TestDuration::microsf(::djinni::F64::toCpp(count)); auto objcpp_result_ = ::testsuite::TestDuration::microsf(::djinni::F64::toCpp(count));
return ::djinni::Duration<::djinni::F64, ::djinni::Duration_us>::fromCpp(r); return ::djinni::Duration<::djinni::F64, ::djinni::Duration_us>::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
+ (NSTimeInterval)nanosf:(double)count { + (NSTimeInterval)nanosf:(double)count {
try { try {
auto r = ::testsuite::TestDuration::nanosf(::djinni::F64::toCpp(count)); auto objcpp_result_ = ::testsuite::TestDuration::nanosf(::djinni::F64::toCpp(count));
return ::djinni::Duration<::djinni::F64, ::djinni::Duration_ns>::fromCpp(r); return ::djinni::Duration<::djinni::F64, ::djinni::Duration_ns>::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
+ (nullable NSNumber *)box:(int64_t)count { + (nullable NSNumber *)box:(int64_t)count {
try { try {
auto r = ::testsuite::TestDuration::box(::djinni::I64::toCpp(count)); auto objcpp_result_ = ::testsuite::TestDuration::box(::djinni::I64::toCpp(count));
return ::djinni::Optional<std::experimental::optional, ::djinni::Duration<::djinni::I64, ::djinni::Duration_s>>::fromCpp(r); return ::djinni::Optional<std::experimental::optional, ::djinni::Duration<::djinni::I64, ::djinni::Duration_s>>::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
+ (int64_t)unbox:(nullable NSNumber *)dt { + (int64_t)unbox:(nullable NSNumber *)dt {
try { try {
auto r = ::testsuite::TestDuration::unbox(::djinni::Optional<std::experimental::optional, ::djinni::Duration<::djinni::I64, ::djinni::Duration_s>>::toCpp(dt)); auto objcpp_result_ = ::testsuite::TestDuration::unbox(::djinni::Optional<std::experimental::optional, ::djinni::Duration<::djinni::I64, ::djinni::Duration_s>>::toCpp(dt));
return ::djinni::I64::fromCpp(r); return ::djinni::I64::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
......
...@@ -40,85 +40,85 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th ...@@ -40,85 +40,85 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th
+ (nonnull DBSetRecord *)getSetRecord { + (nonnull DBSetRecord *)getSetRecord {
try { try {
auto r = ::testsuite::TestHelpers::get_set_record(); auto objcpp_result_ = ::testsuite::TestHelpers::get_set_record();
return ::djinni_generated::SetRecord::fromCpp(r); return ::djinni_generated::SetRecord::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
+ (BOOL)checkSetRecord:(nonnull DBSetRecord *)rec { + (BOOL)checkSetRecord:(nonnull DBSetRecord *)rec {
try { try {
auto r = ::testsuite::TestHelpers::check_set_record(::djinni_generated::SetRecord::toCpp(rec)); auto objcpp_result_ = ::testsuite::TestHelpers::check_set_record(::djinni_generated::SetRecord::toCpp(rec));
return ::djinni::Bool::fromCpp(r); return ::djinni::Bool::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
+ (nonnull DBPrimitiveList *)getPrimitiveList { + (nonnull DBPrimitiveList *)getPrimitiveList {
try { try {
auto r = ::testsuite::TestHelpers::get_primitive_list(); auto objcpp_result_ = ::testsuite::TestHelpers::get_primitive_list();
return ::djinni_generated::PrimitiveList::fromCpp(r); return ::djinni_generated::PrimitiveList::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
+ (BOOL)checkPrimitiveList:(nonnull DBPrimitiveList *)pl { + (BOOL)checkPrimitiveList:(nonnull DBPrimitiveList *)pl {
try { try {
auto r = ::testsuite::TestHelpers::check_primitive_list(::djinni_generated::PrimitiveList::toCpp(pl)); auto objcpp_result_ = ::testsuite::TestHelpers::check_primitive_list(::djinni_generated::PrimitiveList::toCpp(pl));
return ::djinni::Bool::fromCpp(r); return ::djinni::Bool::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
+ (nonnull DBNestedCollection *)getNestedCollection { + (nonnull DBNestedCollection *)getNestedCollection {
try { try {
auto r = ::testsuite::TestHelpers::get_nested_collection(); auto objcpp_result_ = ::testsuite::TestHelpers::get_nested_collection();
return ::djinni_generated::NestedCollection::fromCpp(r); return ::djinni_generated::NestedCollection::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
+ (BOOL)checkNestedCollection:(nonnull DBNestedCollection *)nc { + (BOOL)checkNestedCollection:(nonnull DBNestedCollection *)nc {
try { try {
auto r = ::testsuite::TestHelpers::check_nested_collection(::djinni_generated::NestedCollection::toCpp(nc)); auto objcpp_result_ = ::testsuite::TestHelpers::check_nested_collection(::djinni_generated::NestedCollection::toCpp(nc));
return ::djinni::Bool::fromCpp(r); return ::djinni::Bool::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
+ (nonnull NSDictionary<NSString *, NSNumber *> *)getMap { + (nonnull NSDictionary<NSString *, NSNumber *> *)getMap {
try { try {
auto r = ::testsuite::TestHelpers::get_map(); auto objcpp_result_ = ::testsuite::TestHelpers::get_map();
return ::djinni::Map<::djinni::String, ::djinni::I64>::fromCpp(r); return ::djinni::Map<::djinni::String, ::djinni::I64>::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
+ (BOOL)checkMap:(nonnull NSDictionary<NSString *, NSNumber *> *)m { + (BOOL)checkMap:(nonnull NSDictionary<NSString *, NSNumber *> *)m {
try { try {
auto r = ::testsuite::TestHelpers::check_map(::djinni::Map<::djinni::String, ::djinni::I64>::toCpp(m)); auto objcpp_result_ = ::testsuite::TestHelpers::check_map(::djinni::Map<::djinni::String, ::djinni::I64>::toCpp(m));
return ::djinni::Bool::fromCpp(r); return ::djinni::Bool::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
+ (nonnull NSDictionary<NSString *, NSNumber *> *)getEmptyMap { + (nonnull NSDictionary<NSString *, NSNumber *> *)getEmptyMap {
try { try {
auto r = ::testsuite::TestHelpers::get_empty_map(); auto objcpp_result_ = ::testsuite::TestHelpers::get_empty_map();
return ::djinni::Map<::djinni::String, ::djinni::I64>::fromCpp(r); return ::djinni::Map<::djinni::String, ::djinni::I64>::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
+ (BOOL)checkEmptyMap:(nonnull NSDictionary<NSString *, NSNumber *> *)m { + (BOOL)checkEmptyMap:(nonnull NSDictionary<NSString *, NSNumber *> *)m {
try { try {
auto r = ::testsuite::TestHelpers::check_empty_map(::djinni::Map<::djinni::String, ::djinni::I64>::toCpp(m)); auto objcpp_result_ = ::testsuite::TestHelpers::check_empty_map(::djinni::Map<::djinni::String, ::djinni::I64>::toCpp(m));
return ::djinni::Bool::fromCpp(r); return ::djinni::Bool::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
+ (nonnull DBMapListRecord *)getMapListRecord { + (nonnull DBMapListRecord *)getMapListRecord {
try { try {
auto r = ::testsuite::TestHelpers::get_map_list_record(); auto objcpp_result_ = ::testsuite::TestHelpers::get_map_list_record();
return ::djinni_generated::MapListRecord::fromCpp(r); return ::djinni_generated::MapListRecord::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
+ (BOOL)checkMapListRecord:(nonnull DBMapListRecord *)m { + (BOOL)checkMapListRecord:(nonnull DBMapListRecord *)m {
try { try {
auto r = ::testsuite::TestHelpers::check_map_list_record(::djinni_generated::MapListRecord::toCpp(m)); auto objcpp_result_ = ::testsuite::TestHelpers::check_map_list_record(::djinni_generated::MapListRecord::toCpp(m));
return ::djinni::Bool::fromCpp(r); return ::djinni::Bool::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
...@@ -154,15 +154,15 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th ...@@ -154,15 +154,15 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th
+ (nullable id<DBUserToken>)tokenId:(nullable id<DBUserToken>)t { + (nullable id<DBUserToken>)tokenId:(nullable id<DBUserToken>)t {
try { try {
auto r = ::testsuite::TestHelpers::token_id(::djinni_generated::UserToken::toCpp(t)); auto objcpp_result_ = ::testsuite::TestHelpers::token_id(::djinni_generated::UserToken::toCpp(t));
return ::djinni_generated::UserToken::fromCpp(r); return ::djinni_generated::UserToken::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
+ (nullable id<DBUserToken>)createCppToken { + (nullable id<DBUserToken>)createCppToken {
try { try {
auto r = ::testsuite::TestHelpers::create_cpp_token(); auto objcpp_result_ = ::testsuite::TestHelpers::create_cpp_token();
return ::djinni_generated::UserToken::fromCpp(r); return ::djinni_generated::UserToken::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
...@@ -174,8 +174,8 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th ...@@ -174,8 +174,8 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th
+ (int64_t)cppTokenId:(nullable id<DBUserToken>)t { + (int64_t)cppTokenId:(nullable id<DBUserToken>)t {
try { try {
auto r = ::testsuite::TestHelpers::cpp_token_id(::djinni_generated::UserToken::toCpp(t)); auto objcpp_result_ = ::testsuite::TestHelpers::cpp_token_id(::djinni_generated::UserToken::toCpp(t));
return ::djinni::I64::fromCpp(r); return ::djinni::I64::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
...@@ -189,22 +189,22 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th ...@@ -189,22 +189,22 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th
+ (nullable NSNumber *)returnNone { + (nullable NSNumber *)returnNone {
try { try {
auto r = ::testsuite::TestHelpers::return_none(); auto objcpp_result_ = ::testsuite::TestHelpers::return_none();
return ::djinni::Optional<std::experimental::optional, ::djinni::I32>::fromCpp(r); return ::djinni::Optional<std::experimental::optional, ::djinni::I32>::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
+ (nonnull DBAssortedPrimitives *)assortedPrimitivesId:(nonnull DBAssortedPrimitives *)i { + (nonnull DBAssortedPrimitives *)assortedPrimitivesId:(nonnull DBAssortedPrimitives *)i {
try { try {
auto r = ::testsuite::TestHelpers::assorted_primitives_id(::djinni_generated::AssortedPrimitives::toCpp(i)); auto objcpp_result_ = ::testsuite::TestHelpers::assorted_primitives_id(::djinni_generated::AssortedPrimitives::toCpp(i));
return ::djinni_generated::AssortedPrimitives::fromCpp(r); return ::djinni_generated::AssortedPrimitives::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
+ (nonnull NSData *)idBinary:(nonnull NSData *)b { + (nonnull NSData *)idBinary:(nonnull NSData *)b {
try { try {
auto r = ::testsuite::TestHelpers::id_binary(::djinni::Binary::toCpp(b)); auto objcpp_result_ = ::testsuite::TestHelpers::id_binary(::djinni::Binary::toCpp(b));
return ::djinni::Binary::fromCpp(r); return ::djinni::Binary::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
......
...@@ -33,8 +33,8 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th ...@@ -33,8 +33,8 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th
- (nonnull NSString *)whoami { - (nonnull NSString *)whoami {
try { try {
auto r = _cppRefHandle.get()->whoami(); auto objcpp_result_ = _cppRefHandle.get()->whoami();
return ::djinni::String::fromCpp(r); return ::djinni::String::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
...@@ -49,8 +49,8 @@ public: ...@@ -49,8 +49,8 @@ public:
std::string whoami() override std::string whoami() override
{ {
@autoreleasepool { @autoreleasepool {
auto r = [Handle::get() whoami]; auto objcpp_result_ = [Handle::get() whoami];
return ::djinni::String::toCpp(r); return ::djinni::String::toCpp(objcpp_result_);
} }
} }
}; };
......
...@@ -40,8 +40,8 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th ...@@ -40,8 +40,8 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th
- (nullable id<DBObjcOnlyListener>)returnForObjC { - (nullable id<DBObjcOnlyListener>)returnForObjC {
try { try {
auto r = _cppRefHandle.get()->returnForObjC(); auto objcpp_result_ = _cppRefHandle.get()->returnForObjC();
return ::djinni_generated::ObjcOnlyListener::fromCpp(r); return ::djinni_generated::ObjcOnlyListener::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
...@@ -53,8 +53,8 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th ...@@ -53,8 +53,8 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th
- (nullable DBJavaOnlyListener *)returnForJava { - (nullable DBJavaOnlyListener *)returnForJava {
try { try {
auto r = _cppRefHandle.get()->returnForJava(); auto objcpp_result_ = _cppRefHandle.get()->returnForJava();
return ::djinni_generated::JavaOnlyListener::fromCpp(r); return ::djinni_generated::JavaOnlyListener::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
...@@ -75,8 +75,8 @@ public: ...@@ -75,8 +75,8 @@ public:
std::shared_ptr<::testsuite::ObjcOnlyListener> returnForObjC() override std::shared_ptr<::testsuite::ObjcOnlyListener> returnForObjC() override
{ {
@autoreleasepool { @autoreleasepool {
auto r = [Handle::get() returnForObjC]; auto objcpp_result_ = [Handle::get() returnForObjC];
return ::djinni_generated::ObjcOnlyListener::toCpp(r); return ::djinni_generated::ObjcOnlyListener::toCpp(objcpp_result_);
} }
} }
void callForJava(const std::shared_ptr<::testsuite::JavaOnlyListener> & c_l) override void callForJava(const std::shared_ptr<::testsuite::JavaOnlyListener> & c_l) override
...@@ -88,8 +88,8 @@ public: ...@@ -88,8 +88,8 @@ public:
std::shared_ptr<::testsuite::JavaOnlyListener> returnForJava() override std::shared_ptr<::testsuite::JavaOnlyListener> returnForJava() override
{ {
@autoreleasepool { @autoreleasepool {
auto r = [Handle::get() returnForJava]; auto objcpp_result_ = [Handle::get() returnForJava];
return ::djinni_generated::JavaOnlyListener::toCpp(r); return ::djinni_generated::JavaOnlyListener::toCpp(objcpp_result_);
} }
} }
}; };
......
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from varnames.djinni
#include "_varname_interface_.hpp"
#include <memory>
static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file");
@class DBVarnameInterface;
namespace djinni_generated {
class VarnameInterface
{
public:
using CppType = std::shared_ptr<::testsuite::VarnameInterface>;
using CppOptType = std::shared_ptr<::testsuite::VarnameInterface>;
using ObjcType = DBVarnameInterface*;
using Boxed = VarnameInterface;
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
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from varnames.djinni
#import "DBVarnameInterface+Private.h"
#import "DBVarnameInterface.h"
#import "DBVarnameRecord+Private.h"
#import "DJICppWrapperCache+Private.h"
#import "DJIError.h"
#include <exception>
#include <stdexcept>
#include <utility>
static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file");
@interface DBVarnameInterface ()
- (id)initWithCpp:(const std::shared_ptr<::testsuite::VarnameInterface>&)cppRef;
@end
@implementation DBVarnameInterface {
::djinni::CppProxyCache::Handle<std::shared_ptr<::testsuite::VarnameInterface>> _cppRefHandle;
}
- (id)initWithCpp:(const std::shared_ptr<::testsuite::VarnameInterface>&)cppRef
{
if (self = [super init]) {
_cppRefHandle.assign(cppRef);
}
return self;
}
- (nonnull DBVarnameRecord *)Rmethod:(nonnull DBVarnameRecord *)r {
try {
auto objcpp_result_ = _cppRefHandle.get()->_rmethod_(::djinni_generated::VarnameRecord::toCpp(r));
return ::djinni_generated::VarnameRecord::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS()
}
- (nullable DBVarnameInterface *)Imethod:(nullable DBVarnameInterface *)i {
try {
auto objcpp_result_ = _cppRefHandle.get()->_imethod_(::djinni_generated::VarnameInterface::toCpp(i));
return ::djinni_generated::VarnameInterface::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS()
}
namespace djinni_generated {
auto VarnameInterface::toCpp(ObjcType objc) -> CppType
{
if (!objc) {
return nullptr;
}
return objc->_cppRefHandle.get();
}
auto VarnameInterface::fromCppOpt(const CppOptType& cpp) -> ObjcType
{
if (!cpp) {
return nil;
}
return ::djinni::get_cpp_proxy<DBVarnameInterface>(cpp);
}
} // namespace djinni_generated
@end
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from varnames.djinni
#import "DBVarnameRecord.h"
#import <Foundation/Foundation.h>
@class DBVarnameInterface;
@interface DBVarnameInterface : NSObject
- (nonnull DBVarnameRecord *)Rmethod:(nonnull DBVarnameRecord *)r;
- (nullable DBVarnameInterface *)Imethod:(nullable DBVarnameInterface *)i;
@end
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from varnames.djinni
#import "DBVarnameRecord.h"
#include "_varname_record_.hpp"
static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for this file");
@class DBVarnameRecord;
namespace djinni_generated {
struct VarnameRecord
{
using CppType = ::testsuite::VarnameRecord;
using ObjcType = DBVarnameRecord*;
using Boxed = VarnameRecord;
static CppType toCpp(ObjcType objc);
static ObjcType fromCpp(const CppType& cpp);
};
} // namespace djinni_generated
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from varnames.djinni
#import "DBVarnameRecord+Private.h"
#import "DJIMarshal+Private.h"
#include <cassert>
namespace djinni_generated {
auto VarnameRecord::toCpp(ObjcType obj) -> CppType
{
assert(obj);
return {::djinni::I8::toCpp(obj.Field)};
}
auto VarnameRecord::fromCpp(const CppType& cpp) -> ObjcType
{
return [[DBVarnameRecord alloc] initWithField:(::djinni::I8::fromCpp(cpp._field_))];
}
} // namespace djinni_generated
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from varnames.djinni
#import <Foundation/Foundation.h>
/**
* Underscore is used as a separator in Djinni names, so we don't really
* anticipate it to be used as a prefix/suffix. Some name styles behave
* badly when it is. However this test case ensures we at least don't crash.
*/
@interface DBVarnameRecord : NSObject
- (nonnull instancetype)initWithField:(int8_t)Field;
+ (nonnull instancetype)VarnameRecordWithField:(int8_t)Field;
@property (nonatomic, readonly) int8_t Field;
@end
// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from varnames.djinni
#import "DBVarnameRecord.h"
@implementation DBVarnameRecord
- (nonnull instancetype)initWithField:(int8_t)Field
{
if (self = [super init]) {
_Field = Field;
}
return self;
}
+ (nonnull instancetype)VarnameRecordWithField:(int8_t)Field
{
return [[self alloc] initWithField:Field];
}
- (NSString *)description
{
return [NSString stringWithFormat:@"<%@ %p Field:%@>", self.class, (void *)self, @(self.Field)];
}
@end
...@@ -33,29 +33,29 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th ...@@ -33,29 +33,29 @@ static_assert(__has_feature(objc_arc), "Djinni requires ARC to be enabled for th
+ (nonnull DBWcharTestRec *)getRecord { + (nonnull DBWcharTestRec *)getRecord {
try { try {
auto r = ::testsuite::WcharTestHelpers::get_record(); auto objcpp_result_ = ::testsuite::WcharTestHelpers::get_record();
return ::djinni_generated::WcharTestRec::fromCpp(r); return ::djinni_generated::WcharTestRec::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
+ (nonnull NSString *)getString { + (nonnull NSString *)getString {
try { try {
auto r = ::testsuite::WcharTestHelpers::get_string(); auto objcpp_result_ = ::testsuite::WcharTestHelpers::get_string();
return ::djinni::WString::fromCpp(r); return ::djinni::WString::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
+ (BOOL)checkString:(nonnull NSString *)str { + (BOOL)checkString:(nonnull NSString *)str {
try { try {
auto r = ::testsuite::WcharTestHelpers::check_string(::djinni::WString::toCpp(str)); auto objcpp_result_ = ::testsuite::WcharTestHelpers::check_string(::djinni::WString::toCpp(str));
return ::djinni::Bool::fromCpp(r); return ::djinni::Bool::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
+ (BOOL)checkRecord:(nonnull DBWcharTestRec *)rec { + (BOOL)checkRecord:(nonnull DBWcharTestRec *)rec {
try { try {
auto r = ::testsuite::WcharTestHelpers::check_record(::djinni_generated::WcharTestRec::toCpp(rec)); auto objcpp_result_ = ::testsuite::WcharTestHelpers::check_record(::djinni_generated::WcharTestRec::toCpp(rec));
return ::djinni::Bool::fromCpp(r); return ::djinni::Bool::fromCpp(objcpp_result_);
} DJINNI_TRANSLATE_EXCEPTIONS() } DJINNI_TRANSLATE_EXCEPTIONS()
} }
......
...@@ -4,6 +4,8 @@ djinni-output-temp/cpp/record_with_duration_and_derivings.cpp ...@@ -4,6 +4,8 @@ djinni-output-temp/cpp/record_with_duration_and_derivings.cpp
djinni-output-temp/cpp/date_record.hpp djinni-output-temp/cpp/date_record.hpp
djinni-output-temp/cpp/date_record.cpp djinni-output-temp/cpp/date_record.cpp
djinni-output-temp/cpp/map_date_record.hpp djinni-output-temp/cpp/map_date_record.hpp
djinni-output-temp/cpp/_varname_record_.hpp
djinni-output-temp/cpp/_varname_interface_.hpp
djinni-output-temp/cpp/extended_record_base.hpp djinni-output-temp/cpp/extended_record_base.hpp
djinni-output-temp/cpp/extended_record_base.cpp djinni-output-temp/cpp/extended_record_base.cpp
djinni-output-temp/cpp/objc_only_listener.hpp djinni-output-temp/cpp/objc_only_listener.hpp
...@@ -46,6 +48,8 @@ djinni-output-temp/java/TestDuration.java ...@@ -46,6 +48,8 @@ djinni-output-temp/java/TestDuration.java
djinni-output-temp/java/RecordWithDurationAndDerivings.java djinni-output-temp/java/RecordWithDurationAndDerivings.java
djinni-output-temp/java/DateRecord.java djinni-output-temp/java/DateRecord.java
djinni-output-temp/java/MapDateRecord.java djinni-output-temp/java/MapDateRecord.java
djinni-output-temp/java/VarnameRecord.java
djinni-output-temp/java/VarnameInterface.java
djinni-output-temp/java/ExtendedRecord.java djinni-output-temp/java/ExtendedRecord.java
djinni-output-temp/java/ObjcOnlyListener.java djinni-output-temp/java/ObjcOnlyListener.java
djinni-output-temp/java/JavaOnlyListener.java djinni-output-temp/java/JavaOnlyListener.java
...@@ -86,6 +90,10 @@ djinni-output-temp/jni/NativeDateRecord.hpp ...@@ -86,6 +90,10 @@ djinni-output-temp/jni/NativeDateRecord.hpp
djinni-output-temp/jni/NativeDateRecord.cpp djinni-output-temp/jni/NativeDateRecord.cpp
djinni-output-temp/jni/NativeMapDateRecord.hpp djinni-output-temp/jni/NativeMapDateRecord.hpp
djinni-output-temp/jni/NativeMapDateRecord.cpp djinni-output-temp/jni/NativeMapDateRecord.cpp
djinni-output-temp/jni/NativeVarnameRecord.hpp
djinni-output-temp/jni/NativeVarnameRecord.cpp
djinni-output-temp/jni/NativeVarnameInterface.hpp
djinni-output-temp/jni/NativeVarnameInterface.cpp
djinni-output-temp/jni/NativeExtendedRecord.hpp djinni-output-temp/jni/NativeExtendedRecord.hpp
djinni-output-temp/jni/NativeExtendedRecord.cpp djinni-output-temp/jni/NativeExtendedRecord.cpp
djinni-output-temp/jni/NativeObjcOnlyListener.hpp djinni-output-temp/jni/NativeObjcOnlyListener.hpp
...@@ -156,6 +164,9 @@ djinni-output-temp/objc/DBDateRecord.h ...@@ -156,6 +164,9 @@ djinni-output-temp/objc/DBDateRecord.h
djinni-output-temp/objc/DBDateRecord.mm djinni-output-temp/objc/DBDateRecord.mm
djinni-output-temp/objc/DBMapDateRecord.h djinni-output-temp/objc/DBMapDateRecord.h
djinni-output-temp/objc/DBMapDateRecord.mm djinni-output-temp/objc/DBMapDateRecord.mm
djinni-output-temp/objc/DBVarnameRecord.h
djinni-output-temp/objc/DBVarnameRecord.mm
djinni-output-temp/objc/DBVarnameInterface.h
djinni-output-temp/objc/DBExtendedRecord.h djinni-output-temp/objc/DBExtendedRecord.h
djinni-output-temp/objc/DBExtendedRecord.mm djinni-output-temp/objc/DBExtendedRecord.mm
djinni-output-temp/objc/DBObjcOnlyListener.h djinni-output-temp/objc/DBObjcOnlyListener.h
...@@ -211,6 +222,10 @@ djinni-output-temp/objc/DBDateRecord+Private.h ...@@ -211,6 +222,10 @@ djinni-output-temp/objc/DBDateRecord+Private.h
djinni-output-temp/objc/DBDateRecord+Private.mm djinni-output-temp/objc/DBDateRecord+Private.mm
djinni-output-temp/objc/DBMapDateRecord+Private.h djinni-output-temp/objc/DBMapDateRecord+Private.h
djinni-output-temp/objc/DBMapDateRecord+Private.mm djinni-output-temp/objc/DBMapDateRecord+Private.mm
djinni-output-temp/objc/DBVarnameRecord+Private.h
djinni-output-temp/objc/DBVarnameRecord+Private.mm
djinni-output-temp/objc/DBVarnameInterface+Private.h
djinni-output-temp/objc/DBVarnameInterface+Private.mm
djinni-output-temp/objc/DBExtendedRecord+Private.h djinni-output-temp/objc/DBExtendedRecord+Private.h
djinni-output-temp/objc/DBExtendedRecord+Private.mm djinni-output-temp/objc/DBExtendedRecord+Private.mm
djinni-output-temp/objc/DBObjcOnlyListener+Private.h djinni-output-temp/objc/DBObjcOnlyListener+Private.h
......
...@@ -67,6 +67,9 @@ ...@@ -67,6 +67,9 @@
B5153F9A1D54284100012654 /* DBJavaOnlyListener+Private.mm in Sources */ = {isa = PBXBuildFile; fileRef = B5153F971D54284100012654 /* DBJavaOnlyListener+Private.mm */; }; B5153F9A1D54284100012654 /* DBJavaOnlyListener+Private.mm in Sources */ = {isa = PBXBuildFile; fileRef = B5153F971D54284100012654 /* DBJavaOnlyListener+Private.mm */; };
B51911181D542A7000772DFE /* DBWcharTestHelpers+Private.mm in Sources */ = {isa = PBXBuildFile; fileRef = B51911151D542A7000772DFE /* DBWcharTestHelpers+Private.mm */; }; B51911181D542A7000772DFE /* DBWcharTestHelpers+Private.mm in Sources */ = {isa = PBXBuildFile; fileRef = B51911151D542A7000772DFE /* DBWcharTestHelpers+Private.mm */; };
B519111B1D542B0700772DFE /* wchar_test_helpers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B519111A1D542B0700772DFE /* wchar_test_helpers.cpp */; }; B519111B1D542B0700772DFE /* wchar_test_helpers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B519111A1D542B0700772DFE /* wchar_test_helpers.cpp */; };
B51911501D555EE900772DFE /* DBVarnameRecord+Private.mm in Sources */ = {isa = PBXBuildFile; fileRef = B51911491D555EE900772DFE /* DBVarnameRecord+Private.mm */; };
B51911511D555EE900772DFE /* DBVarnameRecord.mm in Sources */ = {isa = PBXBuildFile; fileRef = B519114B1D555EE900772DFE /* DBVarnameRecord.mm */; };
B51911521D555EE900772DFE /* DBVarnameInterface+Private.mm in Sources */ = {isa = PBXBuildFile; fileRef = B519114D1D555EE900772DFE /* DBVarnameInterface+Private.mm */; };
B52DA5681B103F72005CE75F /* DBAssortedPrimitives.mm in Sources */ = {isa = PBXBuildFile; fileRef = B52DA5651B103F6D005CE75F /* DBAssortedPrimitives.mm */; }; B52DA5681B103F72005CE75F /* DBAssortedPrimitives.mm in Sources */ = {isa = PBXBuildFile; fileRef = B52DA5651B103F6D005CE75F /* DBAssortedPrimitives.mm */; };
B52DA5691B103F72005CE75F /* DBAssortedPrimitives.mm in Sources */ = {isa = PBXBuildFile; fileRef = B52DA5651B103F6D005CE75F /* DBAssortedPrimitives.mm */; }; B52DA5691B103F72005CE75F /* DBAssortedPrimitives.mm in Sources */ = {isa = PBXBuildFile; fileRef = B52DA5651B103F6D005CE75F /* DBAssortedPrimitives.mm */; };
B52DA56A1B103F75005CE75F /* DBAssortedPrimitives+Private.mm in Sources */ = {isa = PBXBuildFile; fileRef = B52DA5671B103F6D005CE75F /* DBAssortedPrimitives+Private.mm */; }; B52DA56A1B103F75005CE75F /* DBAssortedPrimitives+Private.mm in Sources */ = {isa = PBXBuildFile; fileRef = B52DA5671B103F6D005CE75F /* DBAssortedPrimitives+Private.mm */; };
...@@ -290,6 +293,15 @@ ...@@ -290,6 +293,15 @@
B51911171D542A7000772DFE /* DBWcharTestHelpers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DBWcharTestHelpers.h; sourceTree = "<group>"; }; B51911171D542A7000772DFE /* DBWcharTestHelpers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DBWcharTestHelpers.h; sourceTree = "<group>"; };
B51911191D542AEC00772DFE /* wchar_test_helpers.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = wchar_test_helpers.hpp; sourceTree = "<group>"; }; B51911191D542AEC00772DFE /* wchar_test_helpers.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = wchar_test_helpers.hpp; sourceTree = "<group>"; };
B519111A1D542B0700772DFE /* wchar_test_helpers.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wchar_test_helpers.cpp; sourceTree = "<group>"; }; B519111A1D542B0700772DFE /* wchar_test_helpers.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wchar_test_helpers.cpp; sourceTree = "<group>"; };
B51911471D555EDC00772DFE /* _varname_record_.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = _varname_record_.hpp; sourceTree = "<group>"; };
B51911481D555EDC00772DFE /* _varname_interface_.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = _varname_interface_.hpp; sourceTree = "<group>"; };
B51911491D555EE900772DFE /* DBVarnameRecord+Private.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "DBVarnameRecord+Private.mm"; sourceTree = "<group>"; };
B519114A1D555EE900772DFE /* DBVarnameRecord+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "DBVarnameRecord+Private.h"; sourceTree = "<group>"; };
B519114B1D555EE900772DFE /* DBVarnameRecord.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DBVarnameRecord.mm; sourceTree = "<group>"; };
B519114C1D555EE900772DFE /* DBVarnameRecord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DBVarnameRecord.h; sourceTree = "<group>"; };
B519114D1D555EE900772DFE /* DBVarnameInterface+Private.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "DBVarnameInterface+Private.mm"; sourceTree = "<group>"; };
B519114E1D555EE900772DFE /* DBVarnameInterface+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "DBVarnameInterface+Private.h"; sourceTree = "<group>"; };
B519114F1D555EE900772DFE /* DBVarnameInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DBVarnameInterface.h; sourceTree = "<group>"; };
B52DA5641B103F6D005CE75F /* DBAssortedPrimitives.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DBAssortedPrimitives.h; sourceTree = "<group>"; }; B52DA5641B103F6D005CE75F /* DBAssortedPrimitives.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DBAssortedPrimitives.h; sourceTree = "<group>"; };
B52DA5651B103F6D005CE75F /* DBAssortedPrimitives.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = DBAssortedPrimitives.mm; sourceTree = "<group>"; }; B52DA5651B103F6D005CE75F /* DBAssortedPrimitives.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = DBAssortedPrimitives.mm; sourceTree = "<group>"; };
B52DA5661B103F6D005CE75F /* DBAssortedPrimitives+Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "DBAssortedPrimitives+Private.h"; sourceTree = "<group>"; }; B52DA5661B103F6D005CE75F /* DBAssortedPrimitives+Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "DBAssortedPrimitives+Private.h"; sourceTree = "<group>"; };
...@@ -518,6 +530,13 @@ ...@@ -518,6 +530,13 @@
A24249181AF192E0003BF8F0 /* generated-objc */ = { A24249181AF192E0003BF8F0 /* generated-objc */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
B51911491D555EE900772DFE /* DBVarnameRecord+Private.mm */,
B519114A1D555EE900772DFE /* DBVarnameRecord+Private.h */,
B519114B1D555EE900772DFE /* DBVarnameRecord.mm */,
B519114C1D555EE900772DFE /* DBVarnameRecord.h */,
B519114D1D555EE900772DFE /* DBVarnameInterface+Private.mm */,
B519114E1D555EE900772DFE /* DBVarnameInterface+Private.h */,
B519114F1D555EE900772DFE /* DBVarnameInterface.h */,
B51911151D542A7000772DFE /* DBWcharTestHelpers+Private.mm */, B51911151D542A7000772DFE /* DBWcharTestHelpers+Private.mm */,
B51911161D542A7000772DFE /* DBWcharTestHelpers+Private.h */, B51911161D542A7000772DFE /* DBWcharTestHelpers+Private.h */,
B51911171D542A7000772DFE /* DBWcharTestHelpers.h */, B51911171D542A7000772DFE /* DBWcharTestHelpers.h */,
...@@ -668,6 +687,8 @@ ...@@ -668,6 +687,8 @@
A242495D1AF192FC003BF8F0 /* generated-cpp */ = { A242495D1AF192FC003BF8F0 /* generated-cpp */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
B51911471D555EDC00772DFE /* _varname_record_.hpp */,
B51911481D555EDC00772DFE /* _varname_interface_.hpp */,
B51911191D542AEC00772DFE /* wchar_test_helpers.hpp */, B51911191D542AEC00772DFE /* wchar_test_helpers.hpp */,
B5153F871D54282C00012654 /* wchar_test_rec.hpp */, B5153F871D54282C00012654 /* wchar_test_rec.hpp */,
B5F06A9B1D4987C7005BE736 /* enum_usage_interface.hpp */, B5F06A9B1D4987C7005BE736 /* enum_usage_interface.hpp */,
...@@ -819,6 +840,7 @@ ...@@ -819,6 +840,7 @@
A24850291AF96EBC00AFE907 /* DBDateRecord.mm in Sources */, A24850291AF96EBC00AFE907 /* DBDateRecord.mm in Sources */,
A278D45319BA3601006FD937 /* test_helpers.cpp in Sources */, A278D45319BA3601006FD937 /* test_helpers.cpp in Sources */,
6551684C1C4050A4003682A4 /* DBReturnOne+Private.mm in Sources */, 6551684C1C4050A4003682A4 /* DBReturnOne+Private.mm in Sources */,
B51911501D555EE900772DFE /* DBVarnameRecord+Private.mm in Sources */,
B5F06AA51D4987EF005BE736 /* DBEnumUsageInterface+Private.mm in Sources */, B5F06AA51D4987EF005BE736 /* DBEnumUsageInterface+Private.mm in Sources */,
CFFD588D1B019E79001E10B6 /* DBCppException+Private.mm in Sources */, CFFD588D1B019E79001E10B6 /* DBCppException+Private.mm in Sources */,
A238CA921AF84B7100CDDCE5 /* DBDateRecord+Private.mm in Sources */, A238CA921AF84B7100CDDCE5 /* DBDateRecord+Private.mm in Sources */,
...@@ -832,6 +854,7 @@ ...@@ -832,6 +854,7 @@
B52DA56E1B103FC5005CE75F /* assorted_primitives.cpp in Sources */, B52DA56E1B103FC5005CE75F /* assorted_primitives.cpp in Sources */,
CFFD58B31B041BD9001E10B6 /* DBConstantsInterface+Private.mm in Sources */, CFFD58B31B041BD9001E10B6 /* DBConstantsInterface+Private.mm in Sources */,
CFC5D9FC1B152E4300BF2DF8 /* TranslateDuration.cpp in Sources */, CFC5D9FC1B152E4300BF2DF8 /* TranslateDuration.cpp in Sources */,
B51911511D555EE900772DFE /* DBVarnameRecord.mm in Sources */,
A248502F1AF96EBC00AFE907 /* DBRecordWithDerivings.mm in Sources */, A248502F1AF96EBC00AFE907 /* DBRecordWithDerivings.mm in Sources */,
B5F06A851D4973BD005BE736 /* DBConflict+Private.mm in Sources */, B5F06A851D4973BD005BE736 /* DBConflict+Private.mm in Sources */,
A24249741AF192FC003BF8F0 /* constants.cpp in Sources */, A24249741AF192FC003BF8F0 /* constants.cpp in Sources */,
...@@ -865,6 +888,7 @@ ...@@ -865,6 +888,7 @@
CFC5D9D01B15105100BF2DF8 /* extern_record_with_derivings.cpp in Sources */, CFC5D9D01B15105100BF2DF8 /* extern_record_with_derivings.cpp in Sources */,
B51911181D542A7000772DFE /* DBWcharTestHelpers+Private.mm in Sources */, B51911181D542A7000772DFE /* DBWcharTestHelpers+Private.mm in Sources */,
A238CA901AF84B7100CDDCE5 /* DBConstants+Private.mm in Sources */, A238CA901AF84B7100CDDCE5 /* DBConstants+Private.mm in Sources */,
B51911521D555EE900772DFE /* DBVarnameInterface+Private.mm in Sources */,
CFC5D9EA1B1513E800BF2DF8 /* DBExternInterface2+Private.mm in Sources */, CFC5D9EA1B1513E800BF2DF8 /* DBExternInterface2+Private.mm in Sources */,
CFC5DA011B15318B00BF2DF8 /* DBTestDuration+Private.mm in Sources */, CFC5DA011B15318B00BF2DF8 /* DBTestDuration+Private.mm in Sources */,
650CA05E1C2AB5AB007ADDDB /* ListenerCaller.cpp in Sources */, 650CA05E1C2AB5AB007ADDDB /* ListenerCaller.cpp in Sources */,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment