FILE *ofp;
FILE *javafp;
FILE *jnifp;
+FILE *pythonfp;
char *java_class;
time_t starttime;
char *vlib_app_name;
current_java_methodfun = vftp->java_method_function;
break;
+ case PYTHON_PASS:
+ fputs("('", pythonfp);
+ fputs((char *)type_name, pythonfp);
+ fputs("', ", pythonfp);
+ break;
+
default:
fprintf(stderr, "primtype_recursive_generate: unimp pass %d\n", which);
break;
fprintf (fp, "}\n\n");
break;
+ case PYTHON_PASS:
+ fprintf(fp, "('%s',\n", CDATA0);
+ child = this->deeper;
+ indent += 4;
+ while (child) {
+ node_vft_t *vftp = the_vft[child->type];
+ indent_me(fp);
+ vftp->generate(child, which, fp);
+ child = child->peer;
+ }
+ indent -= 4;
+ fprintf(fp, "),\n\n");
+ break;
+
default:
fprintf(stderr, "node_define_generate: unimp pass %d\n", which);
break;
}
}
break;
+ case PYTHON_PASS:
+ fprintf(fp, "'%s'),\n", CDATA0);
+ break;
default:
fprintf(stderr, "node_scalar_generate: unimp pass %d\n", which);
indent_me(fp);
fprintf(fp, "}\n");
break;
+ case PYTHON_PASS:
+ fprintf(fp, "'%s', '%d'),\n", CDATA0, IDATA1);
+ break;
default:
fprintf(stderr, "node_vector_generate: unimp pass %d\n", which);
fprintf(fp, "%s_endian(&a->%s%s);\n",
CDATA0, union_prefix, member_name);
break;
+ case PYTHON_PASS:
+ fprintf(fp, "('%s',", CDATA0);
+ deeper = this->deeper;
+ if (deeper) {
+ vftp = the_vft[deeper->type];
+ vftp->generate(deeper, which, fp);
+ }
+ break;
default:
fprintf(stderr, "node_complex_generate unimp pass %d...\n", which);
while (np) {
if (np->type == NODE_DEFINE) {
if (!(np->flags & NODE_FLAG_TYPEONLY)) {
- /* add the parse tree for "u16 _vl_msg_id" */
+ /* add the parse tree for "u16 _vl_msg_id" */
new_u16 = make_node(NODE_U16);
new_u16->peer = np->deeper;
np->deeper = new_u16;
new_vbl = make_node(NODE_SCALAR);
new_vbl->data[0] = sxerox("_vl_msg_id");
new_u16->deeper = new_vbl;
- }
+ }
}
np = np->peer;
}
fputs (hookup_boilerplate, fp);
}
+void generate_python (YYSTYPE a1, FILE *fp)
+{
+ node_t *np = (node_t *)a1;
+ node_vft_t *vftp;
+ fprintf (fp, "vppapidef = [\n");
+ /* Walk the top-level node-list */
+ while (np) {
+ if (np->type == NODE_DEFINE && !(np->flags & NODE_FLAG_TYPEONLY)) {
+ /* Yeah, this is pedantic */
+ vftp = the_vft[np->type];
+ vftp->generate(np, PYTHON_PASS, fp);
+ }
+ np = np->peer;
+ }
+ fprintf (fp, "\n]\n");
+}
+
void generate(YYSTYPE a1)
{
if (dump_tree) {
generate_jni_code(a1, jnifp);
generate_jni_bottom_boilerplate(jnifp);
}
+ if (pythonfp) {
+ generate_python(a1, pythonfp);
+ }
}