summaryrefslogtreecommitdiff
path: root/lib9p
diff options
context:
space:
mode:
authorLuke T. Shumaker <lukeshu@lukeshu.com>2024-12-21 22:40:21 -0700
committerLuke T. Shumaker <lukeshu@lukeshu.com>2024-12-26 18:18:10 -0700
commit93337489aaf8bc337ef70d72c059901867f415ea (patch)
treeca1811684402849881edc32ef9b1de7d701925fe /lib9p
parent39818a59fdc6cd1249867b7954838222b397f4cd (diff)
lib9p: Reorganize 9p.generated.h
Diffstat (limited to 'lib9p')
-rwxr-xr-xlib9p/idl.gen59
-rw-r--r--lib9p/include/lib9p/9p.generated.h90
2 files changed, 66 insertions, 83 deletions
diff --git a/lib9p/idl.gen b/lib9p/idl.gen
index 31bada3..66161e2 100755
--- a/lib9p/idl.gen
+++ b/lib9p/idl.gen
@@ -159,7 +159,7 @@ def gen_h(versions: set[str], typs: list[idl.Type]) -> str:
ret += "#endif\n"
ret += f"""
-/* versions *******************************************************************/
+/* enum version ***************************************************************/
enum {idprefix}version {{
"""
@@ -177,9 +177,21 @@ enum {idprefix}version {{
ret += f"const char *{idprefix}version_str(enum {idprefix}version);\n"
ret += """
-/* non-message types **********************************************************/
+/* enum msg_type **************************************************************/
+
"""
- for typ in [typ for typ in typs if not isinstance(typ, idl.Message)]:
+ ret += f"enum {idprefix}msg_type {{ /* uint8_t */\n"
+ namewidth = max(len(msg.name) for msg in typs if isinstance(msg, idl.Message))
+ for msg in [msg for msg in typs if isinstance(msg, idl.Message)]:
+ ret += ifdef_push(1, c_ver_ifdef(msg.in_versions))
+ ret += f"\t{idprefix.upper()}TYP_{msg.name.ljust(namewidth)} = {msg.msgid},\n"
+ ret += ifdef_pop(0)
+ ret += "};\n"
+
+ ret += """
+/* payload types **************************************************************/
+"""
+ for typ in typs:
ret += "\n"
ret += ifdef_push(1, c_ver_ifdef(typ.in_versions))
match typ:
@@ -223,10 +235,15 @@ enum {idprefix}version {{
sp3 = " " * (2 + namewidth - len(name))
ret += f"#{sp1}define{sp2}{c_name}{sp3}(({c_typename(typ)})({typ.names[name].val}))\n"
ret += ifdef_pop(1)
- case idl.Struct():
+ case idl.Struct(): # and idl.Message():
+ ret += c_typename(typ) + " {"
+ if not typ.members:
+ ret += "};\n"
+ continue
+ ret += "\n"
+
typewidth = max(len(c_typename(m.typ)) for m in typ.members)
- ret += c_typename(typ) + " {\n"
for member in typ.members:
if member.val:
continue
@@ -239,38 +256,6 @@ enum {idprefix}version {{
ret += "};\n"
ret += ifdef_pop(0)
- ret += """
-/* messages *******************************************************************/
-
-"""
- ret += f"enum {idprefix}msg_type {{ /* uint8_t */\n"
- namewidth = max(len(msg.name) for msg in typs if isinstance(msg, idl.Message))
- for msg in [msg for msg in typs if isinstance(msg, idl.Message)]:
- ret += ifdef_push(1, c_ver_ifdef(msg.in_versions))
- ret += f"\t{idprefix.upper()}TYP_{msg.name.ljust(namewidth)} = {msg.msgid},\n"
- ret += ifdef_pop(0)
- ret += "};\n"
-
- for msg in [msg for msg in typs if isinstance(msg, idl.Message)]:
- ret += "\n"
- ret += ifdef_push(1, c_ver_ifdef(msg.in_versions))
- ret += c_typename(msg) + " {"
- if not msg.members:
- ret += "};\n"
- continue
- ret += "\n"
-
- typewidth = max(len(c_typename(m.typ)) for m in msg.members)
-
- for member in msg.members:
- if member.val:
- continue
- ret += ifdef_push(2, c_ver_ifdef(member.in_versions))
- ret += f"\t{c_typename(member.typ).ljust(typewidth)} {'*' if member.cnt else ' '}{member.name};\n"
- ret += ifdef_pop(1)
- ret += "};\n"
- ret += ifdef_pop(0)
-
return ret
diff --git a/lib9p/include/lib9p/9p.generated.h b/lib9p/include/lib9p/9p.generated.h
index 25aacfe..a6dc13c 100644
--- a/lib9p/include/lib9p/9p.generated.h
+++ b/lib9p/include/lib9p/9p.generated.h
@@ -22,7 +22,7 @@
#error config.h must define CONFIG_9P_ENABLE_9P2000_u
#endif
-/* versions *******************************************************************/
+/* enum version ***************************************************************/
enum lib9p_version {
LIB9P_VER_unknown = 0, /* "unknown" */
@@ -40,7 +40,49 @@ enum lib9p_version {
const char *lib9p_version_str(enum lib9p_version);
-/* non-message types **********************************************************/
+/* enum msg_type **************************************************************/
+
+enum lib9p_msg_type { /* uint8_t */
+#if CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u
+ LIB9P_TYP_Tversion = 100,
+ LIB9P_TYP_Rversion = 101,
+ LIB9P_TYP_Tauth = 102,
+ LIB9P_TYP_Rauth = 103,
+ LIB9P_TYP_Tattach = 104,
+ LIB9P_TYP_Rattach = 105,
+ LIB9P_TYP_Rerror = 107,
+ LIB9P_TYP_Tflush = 108,
+ LIB9P_TYP_Rflush = 109,
+ LIB9P_TYP_Twalk = 110,
+ LIB9P_TYP_Rwalk = 111,
+ LIB9P_TYP_Topen = 112,
+ LIB9P_TYP_Ropen = 113,
+ LIB9P_TYP_Tcreate = 114,
+ LIB9P_TYP_Rcreate = 115,
+ LIB9P_TYP_Tread = 116,
+ LIB9P_TYP_Rread = 117,
+ LIB9P_TYP_Twrite = 118,
+ LIB9P_TYP_Rwrite = 119,
+ LIB9P_TYP_Tclunk = 120,
+ LIB9P_TYP_Rclunk = 121,
+ LIB9P_TYP_Tremove = 122,
+ LIB9P_TYP_Rremove = 123,
+ LIB9P_TYP_Tstat = 124,
+ LIB9P_TYP_Rstat = 125,
+ LIB9P_TYP_Twstat = 126,
+ LIB9P_TYP_Rwstat = 127,
+#endif /* CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u */
+#if CONFIG_9P_ENABLE_9P2000_e
+ LIB9P_TYP_Tsession = 150,
+ LIB9P_TYP_Rsession = 151,
+ LIB9P_TYP_Tsread = 152,
+ LIB9P_TYP_Rsread = 153,
+ LIB9P_TYP_Tswrite = 154,
+ LIB9P_TYP_Rswrite = 155,
+#endif /* CONFIG_9P_ENABLE_9P2000_e */
+};
+
+/* payload types **************************************************************/
#if CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u
typedef uint16_t lib9p_tag_t;
@@ -156,51 +198,7 @@ typedef uint8_t lib9p_o_t;
#define LIB9P_O_EXEC ((lib9p_o_t)(3))
#define LIB9P_O_MODE_MASK ((lib9p_o_t)(0b00000011))
#define LIB9P_O_FLAG_MASK ((lib9p_o_t)(0b11111100))
-#endif /* CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u */
-/* messages *******************************************************************/
-
-enum lib9p_msg_type { /* uint8_t */
-#if CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u
- LIB9P_TYP_Tversion = 100,
- LIB9P_TYP_Rversion = 101,
- LIB9P_TYP_Tauth = 102,
- LIB9P_TYP_Rauth = 103,
- LIB9P_TYP_Tattach = 104,
- LIB9P_TYP_Rattach = 105,
- LIB9P_TYP_Rerror = 107,
- LIB9P_TYP_Tflush = 108,
- LIB9P_TYP_Rflush = 109,
- LIB9P_TYP_Twalk = 110,
- LIB9P_TYP_Rwalk = 111,
- LIB9P_TYP_Topen = 112,
- LIB9P_TYP_Ropen = 113,
- LIB9P_TYP_Tcreate = 114,
- LIB9P_TYP_Rcreate = 115,
- LIB9P_TYP_Tread = 116,
- LIB9P_TYP_Rread = 117,
- LIB9P_TYP_Twrite = 118,
- LIB9P_TYP_Rwrite = 119,
- LIB9P_TYP_Tclunk = 120,
- LIB9P_TYP_Rclunk = 121,
- LIB9P_TYP_Tremove = 122,
- LIB9P_TYP_Rremove = 123,
- LIB9P_TYP_Tstat = 124,
- LIB9P_TYP_Rstat = 125,
- LIB9P_TYP_Twstat = 126,
- LIB9P_TYP_Rwstat = 127,
-#endif /* CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u */
-#if CONFIG_9P_ENABLE_9P2000_e
- LIB9P_TYP_Tsession = 150,
- LIB9P_TYP_Rsession = 151,
- LIB9P_TYP_Tsread = 152,
- LIB9P_TYP_Rsread = 153,
- LIB9P_TYP_Tswrite = 154,
- LIB9P_TYP_Rswrite = 155,
-#endif /* CONFIG_9P_ENABLE_9P2000_e */
-};
-
-#if CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u
struct lib9p_msg_Tversion {
lib9p_tag_t tag;
uint32_t max_msg_size;