-static int hidden_from_java(const node_t * deeper)
-{
- if (current_java_parameter_number++ < 3) {
- if (!strncmp ((char *)(deeper->data[0]), "client_index", 12))
- return 1;
- else if (!strncmp ((char *)(deeper->data[0]), "context", 7))
- return 1;
- else if (!strncmp ((char *)(deeper->data[0]), "_vl_msg_id", 10))
- return 1;
- }
-
- return 0;
-}
-
-void primtype_java_method (node_t * this, enum passid which, FILE *ofp,
- char *java_type_name)
-{
- node_t * deeper;
-
- deeper = this->deeper;
-
- /* We'll take care of _msg_id, client_index, and context ourselves */
- if (hidden_from_java(deeper)) {
- return;
- }
-
- if (deeper->type == NODE_SCALAR)
- fprintf (ofp, "%s %s", java_type_name,
- java_name_mangle(deeper->data[0]));
- else
- fprintf (ofp, "%s [] %s", java_type_name,
- java_name_mangle(deeper->data[0]));
-
- current_java_emitted_parameter = 1;
-}
-
-void primtype_java_parameter (node_t * this, enum passid which, FILE *ofp,
- char *java_type_name)
-{
- node_t * deeper;
-
- deeper = this->deeper;
-
- /* We'll take care of _msg_id, client_index, and context ourselves */
- if (hidden_from_java(deeper)) {
- return;
- }
- if (current_java_parameter_need_comma_space) {
- current_java_parameter_need_comma_space = 0;
- fputs (", ", ofp);
- }
-
- if (deeper->type == NODE_SCALAR)
- fprintf (ofp, "%s %s", java_type_name, (char *)(deeper->data[0]));
- else
- fprintf (ofp, "%sArray %s", java_type_name, (char *)(deeper->data[0]));
-
- current_java_emitted_parameter = 1;
-}
-
-void primtype_java_setup (node_t * this, enum passid which, FILE *ofp,
- char *java_type_name, char *array_element_name)
-{
- node_t * deeper;
-
- deeper = this->deeper;
-
- /* We'll take care of _msg_id, client_index, and context ourselves */
- if (hidden_from_java(deeper)) {
- return;
- }
-
- if (deeper->type == NODE_VECTOR) {
- indent_me(ofp);
- fprintf (ofp,
- "%s * %sP = (*env)->Get%sArrayElements (env, %s, NULL);\n",
- java_type_name, (char *)(deeper->data[0]),
- array_element_name, (char *)(deeper->data[0]));
- }
-
- current_java_emitted_parameter = 1;
-}
-
-void primtype_java_code (node_t * this, enum passid which, FILE *ofp,
- char *java_type_name, char * swapper)
-{
- node_t * deeper;
- char * s;
-
- deeper = this->deeper;
-
- /* We'll take care of _msg_id, client_index, and context ourselves */
- if (hidden_from_java(deeper)) {
- return;
- }
-
- indent_me(ofp);
-
- s = (char *)(deeper->data[0]);
-
- if (swapper == 0) {
- if (deeper->type == NODE_VECTOR)
- fprintf (ofp, "memcpy (mp->%s, %sP, sizeof (mp->%s));\n",
- s, s, s);
- else
- fprintf (ofp, "mp->%s = %s;\n", s, s);
- } else {
- if (deeper->type == NODE_VECTOR) {
- fprintf(ofp, "{\n");
- indent += 4;
- indent_me(ofp);
- fprintf(ofp, "int _i;\n");
- indent_me(ofp);
- fprintf(ofp, "for (_i = 0; _i < %lu; _i++) {\n",
- (u64)(deeper->data[1]));
- indent += 4;
- indent_me(ofp);
- fprintf(ofp, "mp->%s[_i] = %s(%sP[_i]);\n",
- s, swapper, s);
- indent -= 4;
- indent_me(ofp);
- fprintf(ofp, "}\n");
- indent -= 4;
- indent_me(ofp);
- fprintf(ofp, "}\n");
- } else {
- fprintf (ofp, "mp->%s = %s(%s);\n", s, swapper, s);
- }
- }
-
- current_java_emitted_parameter = 1;
-}
-
-void primtype_java_teardown (node_t * this, enum passid which, FILE *ofp,
- char * array_element_name)
-{
- node_t * deeper;
-
- deeper = this->deeper;
-
- /* We'll take care of _msg_id, client_index, and context ourselves */
- if (hidden_from_java(deeper)) {
- return;
- }
-
- if (deeper->type == NODE_VECTOR) {
- indent_me(ofp);
- fprintf (ofp,
- "(*env)->Release%sArrayElements (env, %s, %sP, 0);\n",
- array_element_name,
- (char *)(deeper->data[0]),
- (char *)(deeper->data[0]));
- }
-
- current_java_emitted_parameter = 1;
-}
-