Add ILA plugin
[vpp.git] / vppapigen / node.c
index ffe5d77..449540c 100644 (file)
@@ -292,7 +292,7 @@ void primtype_java_code (node_t * this, enum passid which, FILE *ofp,
             indent_me(ofp);
             fprintf(ofp, "int _i;\n");
             indent_me(ofp);
-            fprintf(ofp, "for (_i = 0; _i < %u; _i++) {\n",
+            fprintf(ofp, "for (_i = 0; _i < %lu; _i++) {\n",
                     (u64)(deeper->data[1]));
             indent += 4;
             indent_me(ofp);
@@ -1161,7 +1161,11 @@ void node_vector_generate (node_t *this, enum passid which, FILE *fp)
         fprintf(fp, "}\n");
         break;
     case PYTHON_PASS:
-        fprintf(fp, "'%s', '%d'),\n", CDATA0, IDATA1);
+        if (CDATA2 != 0) { // variable length vector
+            fprintf(fp, "'%s', '%d', '%s'),\n", CDATA0, IDATA1, CDATA2);
+        } else {
+            fprintf(fp, "'%s', '%d'),\n", CDATA0, IDATA1);
+        }
         break;
 
     default:
@@ -1460,6 +1464,21 @@ YYSTYPE add_vector_vbl (YYSTYPE a1, YYSTYPE a2)
     return ((YYSTYPE) np);
 }
 
+/*
+ * add_vector_vbl (char *vector_name, char *vector_length_var)
+ */
+
+YYSTYPE add_variable_length_vector_vbl (YYSTYPE vector_name, YYSTYPE vector_length_var)
+{
+    node_t *np;
+
+    np = make_node(NODE_VECTOR);
+    np->data[0] = (void *) vector_name;
+    np->data[1] = (void *) 0; // vector size used for vpe.api.h generation (array of length zero)
+    np->data[2] = (void *) vector_length_var; // name of the variable that stores vector length
+    return ((YYSTYPE) np);
+}
+
 /*
  * add_scalar_vbl (char *name)
  */
@@ -1957,24 +1976,24 @@ void generate_jni_top_boilerplate(FILE *fp)
     fprintf (fp, 
              "#define vl_api_version(n,v) static u32 %s_api_version %s = v;\n",
             vlib_app_name, "__attribute__((unused))");
-    fprintf (fp, "#include <api/%s.api.h>\n", vlib_app_name);
+    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 <api/%s_msg_enum.h>\n", vlib_app_name);
+    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 <api/%s_all_api_h.h> \n", vlib_app_name);
+    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 <api/%s_all_api_h.h> \n", vlib_app_name);
+    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 <api/%s_all_api_h.h>\n", vlib_app_name);
+    fprintf (fp, "#include <vpp-api/%s_all_api_h.h>\n", vlib_app_name);
     fprintf (fp, "#undef vl_printfun\n\n");
 }