- /* internally used data type */
- blk[cnt].itemtype = paramtype->type;
-
- /* convert the value according to its declared type */
- switch (paramtype->decltype) {
- case PRIMITIVETYPE_BOOLEAN:
- if (param->vftbl->class == primitivetype_table[paramtype->decltype].class_wrap)
- blk[cnt].item = (u8) ((java_lang_Boolean *) param)->value;
- else
- goto illegal_arg;
- break;
- case PRIMITIVETYPE_BYTE:
- if (param->vftbl->class == primitivetype_table[paramtype->decltype].class_wrap)
- blk[cnt].item = (u8) ((java_lang_Byte *) param)->value;
- else
- goto illegal_arg;
- break;
- case PRIMITIVETYPE_CHAR:
- if (param->vftbl->class == primitivetype_table[paramtype->decltype].class_wrap)
- blk[cnt].item = (u8) ((java_lang_Character *) param)->value;
- else
- goto illegal_arg;
- break;
- case PRIMITIVETYPE_SHORT:
- if (param->vftbl->class == primitivetype_table[paramtype->decltype].class_wrap)
- blk[cnt].item = (u8) ((java_lang_Short *) param)->value;
- else if (param->vftbl->class == primitivetype_table[PRIMITIVETYPE_BYTE].class_wrap)
- blk[cnt].item = (u8) ((java_lang_Byte *) param)->value;
- else
- goto illegal_arg;
- break;
- case PRIMITIVETYPE_INT:
- if (param->vftbl->class == primitivetype_table[paramtype->decltype].class_wrap)
- blk[cnt].item = (u8) ((java_lang_Integer *) param)->value;
- else if (param->vftbl->class == primitivetype_table[PRIMITIVETYPE_SHORT].class_wrap)
- blk[cnt].item = (u8) ((java_lang_Short *) param)->value;
- else if (param->vftbl->class == primitivetype_table[PRIMITIVETYPE_BYTE].class_wrap)
- blk[cnt].item = (u8) ((java_lang_Byte *) param)->value;
- else
- goto illegal_arg;
- break;
- case PRIMITIVETYPE_LONG:
- if (param->vftbl->class == primitivetype_table[paramtype->decltype].class_wrap)
- blk[cnt].item = (u8) ((java_lang_Long *) param)->value;
- else if (param->vftbl->class == primitivetype_table[PRIMITIVETYPE_INT].class_wrap)
- blk[cnt].item = (u8) ((java_lang_Integer *) param)->value;
- else if (param->vftbl->class == primitivetype_table[PRIMITIVETYPE_SHORT].class_wrap)
- blk[cnt].item = (u8) ((java_lang_Short *) param)->value;
- else if (param->vftbl->class == primitivetype_table[PRIMITIVETYPE_BYTE].class_wrap)
- blk[cnt].item = (u8) ((java_lang_Byte *) param)->value;
- else
- goto illegal_arg;
- break;
- case PRIMITIVETYPE_FLOAT:
- if (param->vftbl->class == primitivetype_table[paramtype->decltype].class_wrap)
- *((jfloat *) (&blk[cnt].item)) = (jfloat) ((java_lang_Float *) param)->value;
- else
- goto illegal_arg;
- break;
- case PRIMITIVETYPE_DOUBLE:
- if (param->vftbl->class == primitivetype_table[paramtype->decltype].class_wrap)
- *((jdouble *) (&blk[cnt].item)) = (jdouble) ((java_lang_Float *) param)->value;
- else if (param->vftbl->class == primitivetype_table[PRIMITIVETYPE_FLOAT].class_wrap)
- *((jfloat *) (&blk[cnt].item)) = (jfloat) ((java_lang_Float *) param)->value;
- else
- goto illegal_arg;
- break;
- default:
- goto illegal_arg;
- } /* end declared type switch */