-void generate_java_top_boilerplate(FILE *fp)
-
-{
- char *datestring = ctime(&starttime);
- fixed_name = fixup_input_filename();
-
- datestring[24] = 0;
-
- fprintf (fp, "/*\n");
- fprintf (fp, " * VLIB API java binding %s\n", datestring);
- fprintf (fp, " * Input file: %s\n", input_filename);
- fprintf (fp, " * Automatically generated: please edit the input file ");
- fprintf (fp, "NOT this file!\n");
- fprintf (fp, " */\n\n");
-
- fprintf (fp, "package org.openvpp.vppjapi;\n\n");
- fprintf (fp, "import java.io.IOException;\n\n");
- fprintf (fp, "public class %s extends vppConn {\n",
- java_class);
- fprintf (fp, " public %s(String clientName) throws IOException {\n", java_class);
- fprintf (fp, " super(clientName);\n");
- fprintf (fp, " }\n\n");
-}
-
-void generate_java_bottom_boilerplate(FILE *fp)
-{
- fprintf (fp, "}\n");
-}
-
-
-void generate_java_class_definition (YYSTYPE a1, FILE *fp)
-{
- node_t *np = (node_t *)a1;
- node_vft_t *vftp;
-
- fprintf(fp, "/****** API methods *****/\n\n");
-
- /* Walk the top-level node-list */
- while (np) {
- if (np->type == NODE_DEFINE) {
- if (!(np->flags & (NODE_FLAG_MANUAL_JAVA | NODE_FLAG_TYPEONLY))) {
- /* Suppress messages named "xyz_reply" */
- char * cp = (char *) np->data[0];
- while (*cp)
- cp++;
- cp -= 6;
- if (strncmp (cp, "_reply", 6)) {
- current_java_parameter_number = 0;
- vftp = the_vft[np->type];
- vftp->generate(np, JAVA_METHOD_PASS, fp);
- }
- }
- }
- np = np->peer;
- }
-
- fprintf(fp, "\n/****** end of API methods *****/\n");
-}
-
-void generate_jni_reply_handler_list (YYSTYPE a1, FILE *fp)
-{
- node_t *np = (node_t *)a1;
- node_vft_t *vftp;
-
- fprintf (fp, "#define foreach_api_reply_handler \\\n");
-
- /* Walk the top-level node-list */
- while (np) {
- if (np->type == NODE_DEFINE) {
- if (!(np->flags & (NODE_FLAG_MANUAL_JAVA | NODE_FLAG_TYPEONLY))) {
- /* emit messages named "xyz_reply" */
- char * cp = (char *) np->data[0];
- while (*cp)
- cp++;
- cp -= 6;
- if (!strncmp (cp, "_reply", 6)) {
- fprintf (fp, "_(%s, %s) \\\n",
- uppercase(np->data[0]), (char *)(np->data[0]));
- }
- }
- }
- np = np->peer;
- }
-
- fprintf (fp, "\n\n");
-}
-
-char * m_macro_boilerplate =
-"#define M(T,t) \\\n"
-"do { \\\n"
-" api_result_ready = 0; \\\n"
-" mp = vl_msg_api_alloc(sizeof(*mp)); \\\n"
-" memset (mp, 0, sizeof (*mp)); \\\n"
-" mp->_vl_msg_id = ntohs (VL_API_##T); \\\n"
-" mp->client_index = api_main.my_client_index; \\\n"
-"} while(0);\n\n"
-"#define M2(T,t,n) \\\n"
-"do { \\\n"
-" api_result_ready = 0; \\\n"
-" mp = vl_msg_api_alloc(sizeof(*mp)+(n)); \\\n"
-" memset (mp, 0, sizeof (*mp)); \\\n"
-" mp->_vl_msg_id = ntohs (VL_API_##T); \\\n"
-" mp->client_index = api_main.my_client_index; \\\n"
-"} while(0);\n\n";
-
-char * s_macro_boilerplate =
-"#define S (vl_msg_api_send_shmem (api_main.shmem_hdr->vl_input_queue, \\\n"
-"(u8 *)&mp));\n\n";
-
-char * w_macro_boilerplate =
-"#define W \\\n"
-"do { \\\n"
-" timeout = clib_time_now (&clib_time) + 1.0; \\\n"
-" \\\n"
-" while (clib_time_now (&clib_time) < timeout) { \\\n"
-" if (api_result_ready == 1) { \\\n"
-" return ((jint) api_result); \\\n"
-" } \\\n"
-" } \\\n"
-" return -99; \\\n"
-"} while(0);\n\n";
-
-void generate_jni_top_boilerplate(FILE *fp)
-
-{
- char *datestring = ctime(&starttime);
- fixed_name = fixup_input_filename();
-
- datestring[24] = 0;
-
- fprintf (fp, "/*\n");
- fprintf (fp, " * VLIB Java native code %s\n", datestring);
- fprintf (fp, " * Input file: %s\n", input_filename);
- fprintf (fp, " * Automatically generated: please edit the input file ");
- fprintf (fp, "NOT this file!\n");
- fprintf (fp, " */\n\n");
-
- fprintf (fp, "#include <japi/vppjni.h>\n");
-
- fprintf (fp,
- "#define vl_api_version(n,v) static u32 %s_api_version %s = v;\n",
- vlib_app_name, "__attribute__((unused))");
- fprintf (fp, "#include <vpp-api/%s.api.h>\n", vlib_app_name);
- fprintf (fp, "#undef vl_api_version\n\n");
-
- fprintf (fp, "#include <japi/org_openvpp_vppjapi_vppConn.h>\n");
- fprintf (fp, "#include <japi/org_openvpp_vppjapi_%s.h>\n\n", java_class);
-
- fprintf (fp, "#include <vpp-api/%s_msg_enum.h>\n", vlib_app_name);
- fprintf (fp, "#define vl_typedefs /* define message structures */\n");
- fprintf (fp, "#include <vpp-api/%s_all_api_h.h> \n", vlib_app_name);
- fprintf (fp, "#undef vl_typedefs\n\n");
-
- fprintf (fp, "#define vl_endianfun \n");
- fprintf (fp, "#include <vpp-api/%s_all_api_h.h> \n", vlib_app_name);
- fprintf (fp, "#undef vl_endianfun\n\n");
-
- fprintf (fp, "#define vl_print(handle, ...)\n");
- fprintf (fp, "#define vl_printfun\n");
- fprintf (fp, "#include <vpp-api/%s_all_api_h.h>\n", vlib_app_name);
- fprintf (fp, "#undef vl_printfun\n\n");
-}
-
-void generate_jni_code (YYSTYPE a1, FILE *fp)
-{
- node_t *np = (node_t *)a1;
- node_vft_t *vftp;
-
- /* Walk the top-level node-list */
- while (np) {
- if (np->type == NODE_DEFINE) {
- if (!(np->flags & (NODE_FLAG_MANUAL_JAVA | NODE_FLAG_TYPEONLY))) {
- /* Suppress messages named "xyz_reply" */
- char * cp = (char *) np->data[0];
- while (*cp)
- cp++;
- cp -= 6;
- if (strncmp (cp, "_reply", 6)) {
- current_def_name = np->data[0];
- current_java_parameter_number = 0;
- vftp = the_vft[np->type];
- vftp->generate(np, JAVA_JNI_PASS, fp);
- }
- }
- }
- np = np->peer;
- }
-}
-
-char *hookup_boilerplate =
-"void vl_msg_reply_handler_hookup (void)\n"
-"{\n"
-"#define _(N,n) \\\n"
-" vl_msg_api_set_handlers (VL_API_##N, #n, \\\n"
-" vl_api_generic_reply_handler, \\\n"
-" vl_noop_handler, \\\n"
-" vl_api_##n##_t_endian, \\\n"
-" vl_api_##n##_t_print, \\\n"
-" sizeof(vl_api_##n##_t), 1); \n"
-" foreach_api_reply_handler;\n"
-"#undef _\n\n"
-"}\n\n";
-
-void generate_jni_bottom_boilerplate(FILE *fp)
-{
- fputs (hookup_boilerplate, fp);
-}
-