"autoreply" flag: autogenerate standard xxx_reply_t messages
[vpp.git] / src / tools / vppapigen / node.c
index 260c6f2..9f23403 100644 (file)
@@ -753,8 +753,14 @@ void node_complex_generate (node_t *this, enum passid which, FILE *fp)
         fprintf(fp, "vl_print(handle, \"%s%s ----- \\n\");\n", 
                 union_prefix, member_name);
         indent_me(fp);
-        fprintf(fp, "%s_print(&a->%s%s, handle);\n", 
-                CDATA0, union_prefix, member_name);
+
+        if (deeper && deeper->type == NODE_VECTOR)
+            fprintf(fp, "%s_print(a->%s%s, handle);\n", 
+                    CDATA0, union_prefix, member_name);
+        else
+            fprintf(fp, "%s_print(&a->%s%s, handle);\n", 
+                    CDATA0, union_prefix, member_name);
+
         indent_me(fp);
         fprintf(fp, "vl_print(handle, \"%s%s ----- END \\n\");\n", 
                 union_prefix, member_name);
@@ -772,8 +778,12 @@ void node_complex_generate (node_t *this, enum passid which, FILE *fp)
         }
 
         indent_me(fp);
-        fprintf(fp, "%s_endian(&a->%s%s);\n", 
-                CDATA0, union_prefix, member_name);
+        if (deeper && deeper->type == NODE_VECTOR)
+            fprintf(fp, "%s_endian(a->%s%s);\n", 
+                    CDATA0, union_prefix, member_name);
+        else
+            fprintf(fp, "%s_endian(&a->%s%s);\n", 
+                    CDATA0, union_prefix, member_name);
         break;
     case PYTHON_PASS:
         fprintf(fp, "('%s',", CDATA0);
@@ -1040,6 +1050,11 @@ YYSTYPE set_flags(YYSTYPE a1, YYSTYPE a2)
     flags = (int)(uword) a1;
 
     np->flags |= flags;
+
+    /* Generate a foo_reply_t right here */
+    if (flags & NODE_FLAG_AUTOREPLY) 
+        autoreply(np);
+
     return (a2);
 }
 /*