-static struct format ctf_format = {
- .uint_read = ctf_uint_read,
- .int_read = ctf_int_read,
- .uint_write = ctf_uint_write,
- .int_write = ctf_int_write,
- .double_read = ctf_double_read,
- .double_write = ctf_double_write,
- .float_copy = ctf_float_copy,
- .string_copy = ctf_string_copy,
- .string_read = ctf_string_read,
- .string_write = ctf_string_write,
- .string_free_temp = ctf_string_free_temp,
- .enum_read = ctf_enum_read,
- .enum_write = ctf_enum_write,
- .struct_begin = ctf_struct_begin,
- .struct_end = ctf_struct_end,
- .variant_begin = ctf_variant_begin,
- .variant_end = ctf_variant_end,
- .array_begin = ctf_array_begin,
- .array_end = ctf_array_end,
- .sequence_begin = ctf_sequence_begin,
- .sequence_end = ctf_sequence_end,
+static
+rw_dispatch read_dispatch_table[] = {
+ [ CTF_TYPE_INTEGER ] = ctf_integer_read,
+ [ CTF_TYPE_FLOAT ] = ctf_float_read,
+ [ CTF_TYPE_ENUM ] = ctf_enum_read,
+ [ CTF_TYPE_STRING ] = ctf_string_read,
+ [ CTF_TYPE_STRUCT ] = ctf_struct_rw,
+ [ CTF_TYPE_VARIANT ] = ctf_variant_rw,
+ [ CTF_TYPE_ARRAY ] = ctf_array_rw,
+ [ CTF_TYPE_SEQUENCE ] = ctf_sequence_rw,
+};
+
+static
+rw_dispatch write_dispatch_table[] = {
+ [ CTF_TYPE_INTEGER ] = ctf_integer_write,
+ [ CTF_TYPE_FLOAT ] = ctf_float_write,
+ [ CTF_TYPE_ENUM ] = ctf_enum_write,
+ [ CTF_TYPE_STRING ] = ctf_string_write,
+ [ CTF_TYPE_STRUCT ] = ctf_struct_rw,
+ [ CTF_TYPE_VARIANT ] = ctf_variant_rw,
+ [ CTF_TYPE_ARRAY ] = ctf_array_rw,
+ [ CTF_TYPE_SEQUENCE ] = ctf_sequence_rw,
+};
+
+static
+struct format ctf_format = {