void write_field(environment e, jobject obj, const char* name, T value) { std::string descriptor; jvb::detail::descriptors::descriptor<T> (e, std::back_inserter(descriptor)); jclass cls = e.raw()->GetObjectClass(obj); jfieldID fid = e.raw()->GetFieldID(cls, name, descriptor.c_str()); assert(fid != 0); jvb::detail::set_field(e.raw(), obj, fid, value); }
void write_static_field(environment e, jvb::class_ class_, const char* name, T value) { std::string descriptor; jvb::detail::descriptors::descriptor<T> (e, std::back_inserter(descriptor)); jclass cls = class_.raw(); jfieldID fid = e.raw()->GetStaticFieldID(cls, name, descriptor.c_str()); assert(fid != 0); jvb::detail::set_static_field(e.raw(), cls, fid, value); }
T read_static_field(environment e, jvb::class_ class_, const char* name) { std::string descriptor; jvb::detail::descriptors::descriptor<T> (e, std::back_inserter(descriptor)); jclass cls = class_.raw(); std::cout << "Searching for " << name << " with descriptor " << descriptor << std::endl; jfieldID fid = e.raw()->GetStaticFieldID(cls, name, descriptor.c_str()); assert(fid != 0); return jvb::detail::get_static_field(e.raw(), cls, fid, jvb::detail::tag<T>()); }
inline jstring unwrap(environment e, const char* c) { assert(c != 0); jstring str = e.raw()->NewStringUTF(c); assert(str != 0); return str; }
static jmethodID find_id(environment e, Class cls) { std::string descriptor; jvb::detail::descriptors::descriptor_function <void, typename boost::function_types::parameter_types<F>::type> (e, std::back_inserter(descriptor)); jmethodID id = e.raw()->GetMethodID(cls.raw(), "<init>", descriptor.c_str()); assert(id != 0); return id; }
static jmethodID find_id(environment e, jclass cls, const char* name) { typedef typename boost::function_types::result_type<F>::type return_type; typedef typename boost::function_types::parameter_types<F>::type parameter_types; std::string type; detail::descriptors::descriptor_function<return_type, parameter_types> (e, std::back_inserter<std::string>(type)); assert(cls != 0); jmethodID id = e.raw()->GetStaticMethodID(cls, name, type.c_str()); assert(id != 0); return id; }
static void set_array_region(environment e, jshortArray ar, jint start, jint len , jshort const* raw_ar) { e.raw()->SetShortArrayRegion(ar, start, len, const_cast<jshort*>(raw_ar)); }
static void release_array_elements(environment e, jshortArray ar, jshort* raw_ar , jint mode) { e.raw()->ReleaseShortArrayElements(ar, raw_ar, mode); }
static void set_array_region(environment e, jcharArray ar, jint start, jint len , jchar const* raw_ar) { e.raw()->SetCharArrayRegion(ar, start, len, const_cast<jchar*>(raw_ar)); }
static void release_array_elements(environment e, jcharArray ar, jchar* raw_ar , jint mode) { e.raw()->ReleaseCharArrayElements(ar, raw_ar, mode); }
static void set_array_region(environment e, jbyteArray ar, jint start, jint len , jbyte const* raw_ar) { e.raw()->SetByteArrayRegion(ar, start, len, const_cast<jbyte*>(raw_ar)); }
static void release_array_elements(environment e, jbyteArray ar, jbyte* raw_ar , jint mode) { e.raw()->ReleaseByteArrayElements(ar, raw_ar, mode); }
static void set_array_region(environment e, jlongArray ar, jint start, jint len , jlong const* raw_ar) { e.raw()->SetLongArrayRegion(ar, start, len, const_cast<jlong*>(raw_ar)); }
static void release_array_elements(environment e, jlongArray ar, jlong* raw_ar , jint mode) { e.raw()->ReleaseLongArrayElements(ar, raw_ar, mode); }
string(environment e, const char* cstring) { s = e.raw()->NewStringUTF(cstring); }
jvb::class_ class_(environment e) const { return e.raw()->GetObjectClass(obj); }