Browse Source

JNI-19 more cleanup - this time with a baseball bat - incredible how much nonsense can be stuffed in a generator without any change on generated code. #comment this should fix own_identities_retrieve

JNI-44
Edouard Tisserant 9 years ago
parent
commit
3ed5ac7c46
  1. 73
      src/gen_cpp_Engine.ysl2

73
src/gen_cpp_Engine.ysl2

@ -62,16 +62,19 @@ tstylesheet {
|| ||
apply "parm[returns|creates]", mode=return;
choose { choose {
when "$returning > 1" { when "$returning > 1" {
apply "parm[returns|creates]", mode=return;
apply "parm[1]", mode=return { ||
with "name" > result jobject result_ = NULL;
with "jtype" > Engine$_«@name»_Return jclass clazz_result_ = findClass(env, "org/pEp/jniadapter/Engine$_«@name»_Return");
with "sig" > (Lorg/pEp/jniadapter/Engine;)V assert(clazz_result_);
with "jnitype" > InnerClass jmethodID constructor_result_ = env->GetMethodID(clazz_result_, "<init>", "(Lorg/pEp/jniadapter/Engine;)V");
} assert(constructor_result_);
result_ = env->NewObject(clazz_result_, constructor_result_, obj);
||
apply "parm[returns|creates]", mode=setresult apply "parm[returns|creates]", mode=setresult
with "jtype" > org/pEp/jniadapter/Engine$_«@name»_Return with "jtype" > org/pEp/jniadapter/Engine$_«@name»_Return
@ -82,7 +85,6 @@ tstylesheet {
} }
when "$returning = 1" { when "$returning = 1" {
apply "parm[returns|creates]", mode=return;
|| ||
return «name(parm[returns|creates]/*[3])»_; return «name(parm[returns|creates]/*[3])»_;
@ -120,42 +122,13 @@ tstylesheet {
param "type", "name(*[2])"; param "type", "name(*[2])";
param "jtype" call "toJava" with "type", "$type"; param "jtype" call "toJava" with "type", "$type";
param "name", "name(*[3])"; param "name", "name(*[3])";
param "jnitype" choose {
when "$type = 'message' or $type = 'identity'" > jlong
when "ancestor::namespace/child::enum[@name=$type]" > jint
when "$type = 'stringlist'" > jbyteArray
otherwise >
}
param "retname", "$name";
param "sig" choose {
when "$type = 'message' or $type = 'identity'" > (J)V
when "ancestor::namespace/child::enum[@name=$type]" > (I)V
when "$type = 'stringlist'" > (Ljava.lang.Object;)V
otherwise > ()V
}
choose { choose {
when "$jnitype = 'jbyteArray'" when "$type = 'stringlist' or $type = 'stringpairlist' or $type = 'identity' or $type = 'identitylist'"
||
jobject «$name»_ = NULL;
if (_«$retname»)
«$name»_ = from_stringlist(env, _«$retname»);
||
when "$type = 'identity'"
|| ||
jobject «$name»_ = NULL; jobject «$name»_ = NULL;
if (_«$retname») if (_«$name»)
«$name»_ = from_identity(env, _«$retname»); «$name»_ = from_«$type»(env, _«$name»);
||
when "$type = 'stringpairlist'"
||
jobject «$name»_ = NULL;
if (_«$retname»)
«$name»_ = from_stringpairlist(env, _«$retname»);
|| ||
@ -192,26 +165,14 @@ tstylesheet {
} }
otherwise { otherwise {
| jobject «$name»_ = NULL;
indent(0);
if "$retname != 'result'" > if (_«$retname»)
> {\n
|| ||
jobject «$name»_ = NULL;
if (_«$name») {
jclass clazz_«$name»_ = findClass(env, "org/pEp/jniadapter/«$jtype»"); jclass clazz_«$name»_ = findClass(env, "org/pEp/jniadapter/«$jtype»");
assert(clazz_«$name»_); assert(clazz_«$name»_);
jmethodID constructor_«$name»_ = env->GetMethodID(clazz_«$name»_, "<init>", "«$sig»"); jmethodID constructor_«$name»_ = env->GetMethodID(clazz_«$name»_, "<init>", "(J)V");
assert(constructor_«$name»_); assert(constructor_«$name»_);
|| «$name»_ = env->NewObject(clazz_«$name»_, constructor_«$name»_, (jlong) _«$name»);
indent(1);
> «$name»_ = env->NewObject(clazz_«$name»_, constructor_«$name»_
choose {
when "$jnitype = 'InnerClass'" > , obj
when "$jnitype != ''" > , («$jnitype») _«$retname»
}
> );\n
||
} }
|| ||

Loading…
Cancel
Save