summaryrefslogtreecommitdiff
path: root/source3/aparser/parserel.awk
diff options
context:
space:
mode:
Diffstat (limited to 'source3/aparser/parserel.awk')
-rw-r--r--source3/aparser/parserel.awk213
1 files changed, 0 insertions, 213 deletions
diff --git a/source3/aparser/parserel.awk b/source3/aparser/parserel.awk
deleted file mode 100644
index 6d80f0607e..0000000000
--- a/source3/aparser/parserel.awk
+++ /dev/null
@@ -1,213 +0,0 @@
-# build parse functions for a parsed struct file
-
-function elem_name(v, elem)
-{
- return v["UNION"]elem;
-}
-
-function parse_array(f, v, elnum, flags,
- LOCAL, type, elem, array_len)
-{
- type = elements[elnum, "type"];
- elem = elements[elnum, "elem"];
- array_len = elements[elnum, "array_len"];
- v["ELEM"] = elem_name(v, elem);
- v["TYPE"] = type;
- v["FLAGS"] = flags;
- v["ARRAY_LEN"] = array_len;
-
- if (array_len=="+") {
- print_template(f,"prs_array_optional.tpl", v);
- return;
- }
-
- if (array_len=="&") {
- print_template(f,"prs_array_null.tpl", v);
- return;
- }
-
- if (array_len=="*") {
- print_template(f,"prs_array_remainder.tpl", v);
- return;
- }
-
- if (type == "wchar" || type == "uint16") {
- if (match(array_len,"[0-9]") == 1) {
- print_template(f, "prs_wstring_fixed.tpl", v);
- } else {
- print_template(f, "prs_wstring.tpl", v);
- }
- } else if (type == "uint8") {
- if (match(array_len,"[0-9]") == 1) {
- print_template(f, "prs_uint8s_fixed.tpl", v);
- } else {
- print_template(f, "prs_uint8s.tpl", v);
- }
- } else {
- print_template(f, "prs_array.tpl", v);
- }
-}
-
-
-function parse_element(f, v, elnum, flags,
- LOCAL, type, elem)
-{
- if (elements[elnum,"nowire"] != "") {
- return;
- }
- type = elements[elnum, "type"];
- if (substr(type,1,1) == ".") return;
- elem = elements[elnum, "elem"];
- if (elements[elnum,"ptr"] == "") {
- v["PTR"] = "\\&";
- } else {
- v["PTR"] = " ";
- }
- v["ELEM"] = elem_name(v, elem);
- v["TYPE"] = type;
- v["FLAGS"] = flags;
- print_template(f, "prs_element.tpl", v);
-}
-
-function parse_union(f, v, elnum, flags,
- LOCAL, i)
-{
- v["UNION"] = elements[elnum, "elem"];
- v["SWITCH"] = elements[elnum, "switch"];
-
- if (elements[elnum, "ptr"] == "1") {
- v["UNION"] = v["UNION"]"->";
- } else {
- v["UNION"] = v["UNION"]".";
- }
-
- print_template(f, "union_start.tpl", v);
- for (i=0;i<unions[elnum, "num_elems"];i++) {
- v["CASE"] = elements[unions[elnum, i], "case"];
- print_template(f, "prs_case.tpl", v);
- if (elements[elnum, "ptr"] == "1") {
- parse_scalars(f, v, unions[elnum, i], "PARSE_SCALARS");
- parse_buffers(f, v, unions[elnum, i], "PARSE_BUFFERS");
- } else {
- if (flags == "PARSE_SCALARS") {
- parse_scalars(f, v, unions[elnum, i], flags);
- } else {
- parse_buffers(f, v, unions[elnum, i], flags);
- }
- }
- print_template(f, "prs_break.tpl", v);
- }
- v["UNION"] = "";
-
- print_template(f, "union_end.tpl", v);
-}
-
-function parse_scalar(f, v, elnum, flags)
-{
- if (elements[elnum, "type"] == "union") {
- parse_union(f, v, elnum, flags);
- } else if (elements[elnum, "array_len"]!="") {
- parse_array(f, v, elnum, flags);
- } else {
- parse_element(f, v, elnum, flags);
- }
-}
-
-function parse_pointer(f, v, elnum, flags,
- LOCAL, elem)
-{
- elem = elements[elnum, "elem"];
- v["ELEM"] = elem_name(v, elem);
- v["FLAGS"] = flags;
- print_template(f, "prs_pointer.tpl", v);
-}
-
-function parse_scalars(f, v, elnum, flags)
-{
- if (elements[elnum, "ptr"] == "1") {
- parse_pointer(f, v, elnum, flags);
- } else {
- parse_scalar(f, v, elnum, flags);
- }
-}
-
-function parse_buffers(f, v, elnum, flags,
- LOCAL, elem, type)
-{
- elem = elements[elnum, "elem"];
- type = elements[elnum, "type"];
- v["ELEM"] = elem_name(v, elem);
- if (elements[elnum, "ptr"] == "1") {
- print_template(f, "ifptr_start.tpl", v);
- parse_scalar(f, v, elnum, "PARSE_SCALARS|PARSE_BUFFERS");
- print_template(f, "ifptr_end.tpl", v);
- } else {
- parse_scalar(f, v, elnum, flags);
- }
-}
-
-function struct_immediate(f, v, struct_num,
- LOCAL, i, n1, num_elems)
-{
- num_elems = structs[struct_num, "num_elems"];
- v["STRUCTNAME"] = structs[struct_num, "name"];
- v["FUNCNAME"] = "io_" v["STRUCTNAME"];
-
- print_template(f, "fn_i_start.tpl", v);
-
- for (i=0;i<num_elems;i++) {
- parse_scalars(f, v, structs[struct_num, i], "PARSE_SCALARS");
- parse_buffers(f, v, structs[struct_num, i], "PARSE_BUFFERS");
- }
-
- print_template(f, "fn_i_end.tpl", v);
-}
-
-
-function struct_recursive(f, v, struct_num,
- LOCAL, i, n1, num_elems)
-{
- num_elems = structs[struct_num, "num_elems"];
- v["STRUCTNAME"] = structs[struct_num, "name"];
- v["FUNCNAME"] = "io_" v["STRUCTNAME"];
-
- print_template(f, "fn_start.tpl", v);
-
-# first all the structure pointers, scalars and arrays
- for (i=0;i<num_elems;i++) {
- parse_scalars(f, v, structs[struct_num, i], "PARSE_SCALARS");
- }
-
- print_template(f, "fn_mid.tpl", v);
-
-# now the buffers
- for (i=0;i<num_elems;i++) {
- parse_buffers(f, v, structs[struct_num, i], "PARSE_BUFFERS");
- }
-
- print_template(f, "fn_end.tpl", v);
-}
-
-function struct_parser(f, v, struct_num,
- LOCAL, i, n1, num_elems)
-{
- if (structs[struct_num, "recurse"] == "True") {
- struct_recursive(f, v, struct_num);
- } else {
- struct_immediate(f, v, struct_num);
- }
-}
-
-function produce_relative(f,
- LOCAL, v, i)
-{
- v["MODULE"]=module;
-
- print_template(f, "module_start.tpl", v);
-
- for (i=0;i < num_structs;i++) {
- struct_parser(f, v, i);
- }
-
- print_template(f, "module_end.tpl", v);
-}