summaryrefslogtreecommitdiff
path: root/greeter.jni.cpp
blob: 898be8d3350d8cec5c88a3161b15652d8d190b5e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include "greeter.jni.hpp"

#include <jni/jni.hpp>
#include <mapbox/bindgen/jni.hpp>
#include <mapbox/bindgen/jni/marshal.hpp>

#pragma clang diagnostic ignored "-Wglobal-constructors"

namespace mapbox {
namespace bindgen {

static Registration registration { [] (jni::JNIEnv& env_) {
    jni::RegisterNativePeer<std::shared_ptr<::Greeter>>(env_,
        jni::Class<Greeter>::Singleton(env_),
        "peer",
        [] (jni::JNIEnv& env, jni::Object<Greeter> self, jni::String greeting) {
            return std::make_unique<std::shared_ptr<::Greeter>>(
                Greeter::createCpp(env, self, String::toCpp(env, greeting)));
        },
        "initialize",
        "finalize",
        jni::MakeNativePeerMethod("greeting",
            [] (jni::JNIEnv& env, std::shared_ptr<::Greeter>& object, jni::String name) -> jni::String {
                (void)env;
                return String::toJava(env, object->greeting(String::toCpp(env, name))).release();
            }));
} };

} // namespace bindgen
} // namespace mapbox