VPP-120: include custom types to Python representation of vpe.api

Change-Id: Ide97a8bf55d3baf41a1e86af2c67c6b7b26b657a
Signed-off-by: Marek Gradzki <mgradzki@cisco.com>
This commit is contained in:
Marek Gradzki
2016-09-29 13:20:52 +02:00
parent e85581cd07
commit 101759c0d6
4 changed files with 42 additions and 20 deletions

View File

@ -109,7 +109,7 @@ def get_definitions():
# Pass 1
func_list = []
func_name = {}
for a in cfg.vppapidef:
for a in cfg.messages:
if not is_supported(a[0]):
continue

View File

@ -119,7 +119,7 @@ def get_definitions():
func_list = []
func_name = {}
i = 1
for a in cfg.vppapidef:
for a in cfg.messages:
pack, packlen, tup, zeroarray = get_pack(a[1:])
func_name[a[0]] = dict([('name', a[0]), ('pack', pack), ('packlen', packlen), ('tup', tup), ('args', get_args(a[1:])),
('zeroarray', zeroarray)])

View File

@ -1324,11 +1324,11 @@ void add_msg_ids(YYSTYPE a1)
}
}
void generate_python (YYSTYPE a1, FILE *fp)
void generate_python_msg_definitions(YYSTYPE a1, FILE *fp)
{
node_t *np = (node_t *)a1;
node_vft_t *vftp;
fprintf (fp, "vppapidef = [\n");
fprintf (fp, "messages = [\n");
/* Walk the top-level node-list */
while (np) {
if (np->type == NODE_DEFINE && !(np->flags & NODE_FLAG_TYPEONLY)) {
@ -1339,6 +1339,28 @@ void generate_python (YYSTYPE a1, FILE *fp)
np = np->peer;
}
fprintf (fp, "\n]\n");
}
void generate_python_typeonly_definitions(YYSTYPE a1, FILE *fp)
{
node_t *np = (node_t *)a1;
node_vft_t *vftp;
fprintf (fp, "types = [\n");
/* Walk the top-level node-list */
while (np) {
if (np->type == NODE_DEFINE && (np->flags & NODE_FLAG_TYPEONLY)) {
vftp = the_vft[np->type];
vftp->generate(np, PYTHON_PASS, fp);
}
np = np->peer;
}
fprintf (fp, "\n]\n");
}
void generate_python(YYSTYPE a1, FILE *fp)
{
generate_python_typeonly_definitions(a1, fp);
generate_python_msg_definitions(a1, fp);
/*
* API CRC signature

View File

@ -267,7 +267,7 @@ api_func_table = []
api_name_to_id = {}
''')
for i, a in enumerate(vppapidef):
for i, a in enumerate(messages):
name = a[0]
encode_print(name, str(i), a[1:])
decode_print(name, a[1:])