Created
February 15, 2015 10:50
-
-
Save rikkimax/11ef88b85c9bd67273fd to your computer and use it in GitHub Desktop.
This file contains hidden or 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
class String : JRootObject { | |
this(jobject id) { | |
myJavaObjectID_ = id; | |
} | |
private jobject myJavaObjectID_; | |
@property jobject myJavaObjectId() { return myJavaObjectID_; } | |
static { | |
private JClass myJavaClassID_; | |
@property JClass myJavaClassId() { | |
if (myJavaClassID_ is null) myJavaClassID_ = DJvm.getInstance.findClass("java.lang.String"); | |
return myJavaClassID_; } | |
} | |
this(string a0) { | |
DJvm djvm = DJvm.getInstance; | |
JNIEnv* env = djvm.env; | |
if (env is null) throw new NonCreatableClass("Cannot create a class, environement unknown."); | |
JMethod mid = myJavaClassId.getMethod("<init>", "(Ljava/lang/String;)V"); | |
if (myJavaClassId is null) throw new NonCreatableClass("Cannot create a class, unknown method constructor for arguments, (Ljava/lang/String;)V."); | |
myJavaObjectID_ = (*env).NewObject(env, myJavaClassId.cls, mid.methodID, (*env).NewStringUTF(env, a0.toStringz)); | |
} | |
this() { | |
DJvm djvm = DJvm.getInstance; | |
JNIEnv* env = djvm.env; | |
if (env is null) throw new NonCreatableClass("Cannot create a class, environement unknown."); | |
JMethod mid = myJavaClassId.getMethod("<init>", "()V"); | |
if (myJavaClassId is null) throw new NonCreatableClass("Cannot create a class, unknown method constructor for arguments, ()V."); | |
myJavaObjectID_ = (*env).NewObject(env, myJavaClassId.cls, mid.methodID, ); | |
} | |
char charAt(int a0) { | |
JNIEnv* env = DJvm.getInstance.env; | |
jmethodID mid = (*env).GetMethodID(env, myJavaClassId.cls, cast(const(char)*)"charAt".toStringz, cast(const(char)*)"(I)C".toStringz); | |
auto ret = (*env).CallByteMethod(env, myJavaObjectId(), mid, jvalue.fromValue(a0)); | |
return cast(char)ret; | |
} | |
string concat(string a0) { | |
JNIEnv* env = DJvm.getInstance.env; | |
jmethodID mid = (*env).GetMethodID(env, myJavaClassId.cls, cast(const(char)*)"concat".toStringz, cast(const(char)*)"(Ljava/lang/String;)Ljava/lang/String;".toStringz); | |
auto ret = (*env).CallObjectMethod(env, myJavaObjectId(), mid, (*env).NewStringUTF(env, a0.toStringz)); | |
int len = (*env).GetStringUTFLength(env, ret); | |
auto retv = (*env).GetStringUTFChars(env, ret, null); | |
string retv2 = cast(string)retv[0 .. len].idup; | |
(*env).ReleaseStringUTFChars(env, ret, retv); | |
return retv2; | |
} | |
static string valueOf(bool a0) { | |
JNIEnv* env = DJvm.getInstance.env; | |
jmethodID mid = (*env).GetMethodID(env, myJavaClassId.cls, cast(const(char)*)"valueOf".toStringz, cast(const(char)*)"(Z)Ljava/lang/String;".toStringz); | |
auto ret = (*env).CallStaticObjectMethod(env, myJavaClassId().cls, mid, jvalue.fromValue(a0)); | |
int len = (*env).GetStringUTFLength(env, ret); | |
auto retv = (*env).GetStringUTFChars(env, ret, null); | |
string retv2 = cast(string)retv[0 .. len].idup; | |
(*env).ReleaseStringUTFChars(env, ret, retv); | |
return retv2; | |
} | |
@property bool myfield() { | |
JNIEnv* env = DJvm.getInstance.env; | |
JField field = myJavaClassId().getField("myfield", "Z"); | |
auto ret = (*env).GetBooleanField(env, myJavaObjectId(), field.fieldId); | |
return cast(bool)ret; | |
} | |
@property void myfield(bool toset) { | |
JNIEnv* env = DJvm.getInstance.env; | |
JField field = myJavaClassId().getField("myfield", "Z"); | |
(*env).SetBooleanField(env, myJavaObjectId(), field.fieldId, toset); | |
} | |
static @property string javaMangleOf() pure { return "java/lang/String"; } | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment