{
}
- _finline operator bool() const {
- return value_ != NULL;
+ _finline operator Value_() const {
+ return value_;
}
- _finline operator JNIEnv *() const {
+ _finline JNIEnv *jni() const {
return jni_;
}
- _finline operator Value_() const {
- return value_;
- }
-
_finline Value_ get() const {
return value_;
}
value_(&value)
{
_assert(value);
- JNIEnv *jni(value);
+ JNIEnv *jni(value.jni());
size = jni->GetStringUTFLength(value);
data = jni->GetStringUTFChars(value, NULL);
}
~CYJavaUTF8String() {
if (value_ != NULL) {
- JNIEnv *jni(*value_);
+ JNIEnv *jni(value_->jni());
jni->ReleaseStringUTFChars(*value_, data);
}
}
return CYPoolCString(pool, CYJavaUTF8String(value_.cast<jobject>()));
}
- virtual JSValueRef CastJSValue(JSContextRef context, const char *name) const {
- return CYCastJSValue(context, value_);
- }
+ virtual JSValueRef CastJSValue(JSContextRef context, const char *name) const;
};
// }}}
{
}
+ template <typename Other_>
+ CYJavaEnv(const CYJavaRef<Other_> &value) :
+ jni(value.jni())
+ {
+ }
+
operator JNIEnv *() const {
return jni;
}
CYJavaValue(const CYJavaValue &) = delete;
};
+static JSValueRef CYCastJSValue(JSContextRef context, const CYJavaRef<jobject> &value);
+
+template <typename Other_>
+static _finline JSValueRef CYCastJSValue(JSContextRef context, const CYJavaRef<Other_> &value) {
+ return CYCastJSValue(context, value.template cast<jobject>());
+}
+
template <typename Type_>
static _finline JSValueRef CYJavaCastJSValue(JSContextRef context, Type_ value) {
return CYCastJSValue(context, value);
return CYCastJSValue(context, static_cast<bool>(value));
}
+JSValueRef CYJavaError::CastJSValue(JSContextRef context, const char *name) const {
+ return CYCastJSValue(context, value_);
+}
+
static std::map<std::string, CYJavaPrimitive> Primitives_;
static CYJavaPrimitive CYJavaGetPrimitive(JSContextRef context, const CYJavaRef<jclass> &type, jmethodID Class$get$$Name) {