46 lines
1.3 KiB
C
46 lines
1.3 KiB
C
|
|
#include "jhammer.h"
|
||
|
|
#include "com_upstandinghackers_hammer_ParseResult.h"
|
||
|
|
|
||
|
|
HParseResult *unwrap_parse_result(JNIEnv *env, jobject obj)
|
||
|
|
{
|
||
|
|
jclass parseResultClass;
|
||
|
|
jfieldID parseResultInner;
|
||
|
|
FIND_CLASS(parseResultClass, env, "com/upstandinghackers/hammer/ParseResult");
|
||
|
|
parseResultInner = (*env)->GetFieldID(env, parseResultClass, "inner", "J");
|
||
|
|
return (HParseResult *)((*env)->GetLongField(env, obj, parseResultInner));
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
JNIEXPORT jobject JNICALL Java_com_upstandinghackers_hammer_ParseResult_getAst
|
||
|
|
(JNIEnv *env, jobject this)
|
||
|
|
{
|
||
|
|
HParseResult *inner;
|
||
|
|
jclass parsedTokenClass;
|
||
|
|
jobject retVal;
|
||
|
|
|
||
|
|
if(this == NULL)
|
||
|
|
return NULL; // parse unsuccessful
|
||
|
|
inner = unwrap_parse_result(env, this);
|
||
|
|
if(inner->ast == NULL)
|
||
|
|
return NULL; // parse successful, but empty
|
||
|
|
|
||
|
|
FIND_CLASS(parsedTokenClass, env, "com/upstandinghackers/hammer/ParsedToken");
|
||
|
|
NEW_INSTANCE(retVal, env, parsedTokenClass, inner->ast);
|
||
|
|
return retVal;
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
JNIEXPORT jlong JNICALL Java_com_upstandinghackers_hammer_ParseResult_getBitLength
|
||
|
|
(JNIEnv *env, jobject this)
|
||
|
|
{
|
||
|
|
HParseResult *inner = unwrap_parse_result(env, this);
|
||
|
|
return (jlong) (inner->bit_length);
|
||
|
|
}
|
||
|
|
|
||
|
|
JNIEXPORT void JNICALL Java_com_upstandinghackers_hammer_ParseResult_free
|
||
|
|
(JNIEnv *env, jobject this)
|
||
|
|
{
|
||
|
|
//XXX: NOT IMPLEMENTED
|
||
|
|
}
|
||
|
|
|