forked from osmocom/wireshark
ftypes: create a set_value union
struct _ftype_t contains a number of pointers to set_value_...() functions. For each pre-defined ftype_t, only one of these pointers is != NULL. As the comment already says, we should move these functions into a union. ftenum_t ftype will be used for selecting the correct function pointer from the union. Create a set_value union and move the FvalueSetByteArrayFunc pointer into the union. Update fvalue_set_byte_array() accordingly. Check that the fvalue_t parameter is of the correct type. Change-Id: I6568d8f47108311289c0cd425f28ea8b38046141 Reviewed-on: https://code.wireshark.org/review/20433 Petri-Dish: Martin Kaiser <wireshark@kaiser.cx> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Martin Kaiser <wireshark@kaiser.cx>
This commit is contained in:
parent
4caa64fc18
commit
25015a00a3
|
@ -737,7 +737,8 @@ ftype_register_bytes(void)
|
|||
bytes_to_repr, /* val_to_string_repr */
|
||||
bytes_repr_len, /* len_string_repr */
|
||||
|
||||
bytes_fvalue_set, /* set_value_byte_array */
|
||||
{ .set_value_byte_array = bytes_fvalue_set }, /* union set_value */
|
||||
|
||||
NULL, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
|
@ -782,7 +783,8 @@ ftype_register_bytes(void)
|
|||
bytes_to_repr, /* val_to_string_repr */
|
||||
bytes_repr_len, /* len_string_repr */
|
||||
|
||||
bytes_fvalue_set, /* set_value_byte_array */
|
||||
{ .set_value_byte_array = bytes_fvalue_set }, /* union set_value */
|
||||
|
||||
NULL, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
|
@ -827,7 +829,8 @@ ftype_register_bytes(void)
|
|||
bytes_to_repr, /* val_to_string_repr */
|
||||
bytes_repr_len, /* len_string_repr */
|
||||
|
||||
NULL, /* set_value_byte_array */
|
||||
{ NULL }, /* union set_value */
|
||||
|
||||
ax25_fvalue_set, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
|
@ -872,7 +875,8 @@ ftype_register_bytes(void)
|
|||
bytes_to_repr, /* val_to_string_repr */
|
||||
bytes_repr_len, /* len_string_repr */
|
||||
|
||||
NULL, /* set_value_byte_array */
|
||||
{ NULL }, /* union set_value */
|
||||
|
||||
vines_fvalue_set, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
|
@ -917,7 +921,8 @@ ftype_register_bytes(void)
|
|||
bytes_to_repr, /* val_to_string_repr */
|
||||
bytes_repr_len, /* len_string_repr */
|
||||
|
||||
NULL, /* set_value_byte_array */
|
||||
{ NULL }, /* union set_value */
|
||||
|
||||
ether_fvalue_set, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
|
@ -962,7 +967,8 @@ ftype_register_bytes(void)
|
|||
oid_to_repr, /* val_to_string_repr */
|
||||
oid_repr_len, /* len_string_repr */
|
||||
|
||||
oid_fvalue_set, /* set_value_byte_array */
|
||||
{ .set_value_byte_array = oid_fvalue_set }, /* union set_value */
|
||||
|
||||
NULL, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
|
@ -1007,7 +1013,8 @@ ftype_register_bytes(void)
|
|||
rel_oid_to_repr, /* val_to_string_repr */
|
||||
rel_oid_repr_len, /* len_string_repr */
|
||||
|
||||
oid_fvalue_set, /* set_value_byte_array (same as full oid) */
|
||||
{ .set_value_byte_array = oid_fvalue_set }, /* union set_value */
|
||||
|
||||
NULL, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
|
@ -1052,7 +1059,8 @@ ftype_register_bytes(void)
|
|||
system_id_to_repr, /* val_to_string_repr */
|
||||
bytes_repr_len, /* len_string_repr */
|
||||
|
||||
system_id_fvalue_set, /* set_value_byte_array */
|
||||
{ .set_value_byte_array = system_id_fvalue_set }, /* union set_value */
|
||||
|
||||
NULL, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
|
@ -1097,7 +1105,8 @@ ftype_register_bytes(void)
|
|||
bytes_to_repr, /* val_to_string_repr */
|
||||
bytes_repr_len, /* len_string_repr */
|
||||
|
||||
NULL, /* set_value_byte_array */
|
||||
{ NULL }, /* union set_value */
|
||||
|
||||
fcwwn_fvalue_set, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
|
|
|
@ -170,7 +170,8 @@ ftype_register_double(void)
|
|||
float_val_to_repr, /* val_to_string_repr */
|
||||
float_val_repr_len, /* len_string_repr */
|
||||
|
||||
NULL, /* set_value_byte_array */
|
||||
{ NULL }, /* union set_value */
|
||||
|
||||
NULL, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
|
@ -215,7 +216,8 @@ ftype_register_double(void)
|
|||
double_val_to_repr, /* val_to_string_repr */
|
||||
double_val_repr_len, /* len_string_repr */
|
||||
|
||||
NULL, /* set_value_byte_array */
|
||||
{ NULL }, /* union set_value */
|
||||
|
||||
NULL, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
|
|
|
@ -135,7 +135,8 @@ ftype_register_guid(void)
|
|||
guid_to_repr, /* val_to_string_repr */
|
||||
guid_repr_len, /* len_string_repr */
|
||||
|
||||
NULL, /* set_value_byte_array */
|
||||
{ NULL }, /* union set_value */
|
||||
|
||||
NULL, /* set_value_bytes */
|
||||
guid_fvalue_set_guid, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
|
|
|
@ -1438,7 +1438,8 @@ Example: 114 is 0x0072
|
|||
sfloat_ieee_11073_val_to_repr, /* val_to_string_repr */
|
||||
sfloat_ieee_11073_val_repr_len, /* len_string_repr */
|
||||
|
||||
NULL, /* set_value_byte_array */
|
||||
{ NULL }, /* union set_value */
|
||||
|
||||
NULL, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
|
@ -1510,7 +1511,8 @@ Example: 36.4 is 0xFF00016C
|
|||
float_ieee_11073_val_to_repr, /* val_to_string_repr */
|
||||
float_ieee_11073_val_repr_len, /* len_string_repr */
|
||||
|
||||
NULL, /* set_value_byte_array */
|
||||
{ NULL }, /* union set_value */
|
||||
|
||||
NULL, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
|
|
|
@ -1026,7 +1026,8 @@ ftype_register_integers(void)
|
|||
char_to_repr, /* val_to_string_repr */
|
||||
char_repr_len, /* len_string_repr */
|
||||
|
||||
NULL, /* set_value_byte_array */
|
||||
{ NULL }, /* union set_value */
|
||||
|
||||
NULL, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
|
@ -1070,7 +1071,8 @@ ftype_register_integers(void)
|
|||
uinteger_to_repr, /* val_to_string_repr */
|
||||
uinteger_repr_len, /* len_string_repr */
|
||||
|
||||
NULL, /* set_value_byte_array */
|
||||
{ NULL }, /* union set_value */
|
||||
|
||||
NULL, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
|
@ -1114,8 +1116,9 @@ ftype_register_integers(void)
|
|||
uinteger_to_repr, /* val_to_string_repr */
|
||||
uinteger_repr_len, /* len_string_repr */
|
||||
|
||||
{ NULL }, /* union set_value */
|
||||
|
||||
NULL, /* set_value_bytes */
|
||||
NULL, /* set_value_byte_array */
|
||||
NULL, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
NULL, /* set_value_string */
|
||||
|
@ -1158,7 +1161,8 @@ ftype_register_integers(void)
|
|||
uinteger_to_repr, /* val_to_string_repr */
|
||||
uinteger_repr_len, /* len_string_repr */
|
||||
|
||||
NULL, /* set_value_byte_array */
|
||||
{ NULL }, /* union set_value */
|
||||
|
||||
NULL, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
|
@ -1202,7 +1206,8 @@ ftype_register_integers(void)
|
|||
uinteger_to_repr, /* val_to_string_repr */
|
||||
uinteger_repr_len, /* len_string_repr */
|
||||
|
||||
NULL, /* set_value_byte_array */
|
||||
{ NULL }, /* union set_value */
|
||||
|
||||
NULL, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
|
@ -1246,7 +1251,8 @@ ftype_register_integers(void)
|
|||
uinteger64_to_repr, /* val_to_string_repr */
|
||||
uinteger64_repr_len, /* len_string_repr */
|
||||
|
||||
NULL, /* set_value_byte_array */
|
||||
{ NULL }, /* union set_value */
|
||||
|
||||
NULL, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
|
@ -1290,7 +1296,8 @@ ftype_register_integers(void)
|
|||
uinteger64_to_repr, /* val_to_string_repr */
|
||||
uinteger64_repr_len, /* len_string_repr */
|
||||
|
||||
NULL, /* set_value_byte_array */
|
||||
{ NULL }, /* union set_value */
|
||||
|
||||
NULL, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
|
@ -1334,7 +1341,8 @@ ftype_register_integers(void)
|
|||
uinteger64_to_repr, /* val_to_string_repr */
|
||||
uinteger64_repr_len, /* len_string_repr */
|
||||
|
||||
NULL, /* set_value_byte_array */
|
||||
{ NULL }, /* union set_value */
|
||||
|
||||
NULL, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
|
@ -1378,7 +1386,8 @@ ftype_register_integers(void)
|
|||
uinteger64_to_repr, /* val_to_string_repr */
|
||||
uinteger64_repr_len, /* len_string_repr */
|
||||
|
||||
NULL, /* set_value_byte_array */
|
||||
{ NULL }, /* union set_value */
|
||||
|
||||
NULL, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
|
@ -1422,7 +1431,8 @@ ftype_register_integers(void)
|
|||
integer_to_repr, /* val_to_string_repr */
|
||||
integer_repr_len, /* len_string_repr */
|
||||
|
||||
NULL, /* set_value_byte_array */
|
||||
{ NULL }, /* union set_value */
|
||||
|
||||
NULL, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
|
@ -1466,7 +1476,8 @@ ftype_register_integers(void)
|
|||
integer_to_repr, /* val_to_string_repr */
|
||||
integer_repr_len, /* len_string_repr */
|
||||
|
||||
NULL, /* set_value_byte_array */
|
||||
{ NULL }, /* union set_value */
|
||||
|
||||
NULL, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
|
@ -1510,7 +1521,8 @@ ftype_register_integers(void)
|
|||
integer_to_repr, /* val_to_string_repr */
|
||||
integer_repr_len, /* len_string_repr */
|
||||
|
||||
NULL, /* set_value_byte_array */
|
||||
{ NULL }, /* union set_value */
|
||||
|
||||
NULL, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
|
@ -1554,7 +1566,8 @@ ftype_register_integers(void)
|
|||
integer_to_repr, /* val_to_string_repr */
|
||||
integer_repr_len, /* len_string_repr */
|
||||
|
||||
NULL, /* set_value_byte_array */
|
||||
{ NULL }, /* union set_value */
|
||||
|
||||
NULL, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
|
@ -1598,7 +1611,8 @@ ftype_register_integers(void)
|
|||
integer64_to_repr, /* val_to_string_repr */
|
||||
integer64_repr_len, /* len_string_repr */
|
||||
|
||||
NULL, /* set_value_byte_array */
|
||||
{ NULL }, /* union set_value */
|
||||
|
||||
NULL, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
|
@ -1642,7 +1656,8 @@ ftype_register_integers(void)
|
|||
integer64_to_repr, /* val_to_string_repr */
|
||||
integer64_repr_len, /* len_string_repr */
|
||||
|
||||
NULL, /* set_value_byte_array */
|
||||
{ NULL }, /* union set_value */
|
||||
|
||||
NULL, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
|
@ -1686,7 +1701,8 @@ ftype_register_integers(void)
|
|||
integer64_to_repr, /* val_to_string_repr */
|
||||
integer64_repr_len, /* len_string_repr */
|
||||
|
||||
NULL, /* set_value_byte_array */
|
||||
{ NULL }, /* union set_value */
|
||||
|
||||
NULL, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
|
@ -1730,7 +1746,8 @@ ftype_register_integers(void)
|
|||
integer64_to_repr, /* val_to_string_repr */
|
||||
integer64_repr_len, /* len_string_repr */
|
||||
|
||||
NULL, /* set_value_byte_array */
|
||||
{ NULL }, /* union set_value */
|
||||
|
||||
NULL, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
|
@ -1774,7 +1791,8 @@ ftype_register_integers(void)
|
|||
boolean_to_repr, /* val_to_string_repr */
|
||||
boolean_repr_len, /* len_string_repr */
|
||||
|
||||
NULL, /* set_value_byte_array */
|
||||
{ NULL }, /* union set_value */
|
||||
|
||||
NULL, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
|
@ -1819,7 +1837,8 @@ ftype_register_integers(void)
|
|||
ipxnet_to_repr, /* val_to_string_repr */
|
||||
ipxnet_repr_len, /* len_string_repr */
|
||||
|
||||
NULL, /* set_value_byte_array */
|
||||
{ NULL }, /* union set_value */
|
||||
|
||||
NULL, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
|
@ -1864,7 +1883,8 @@ ftype_register_integers(void)
|
|||
uinteger_to_repr, /* val_to_string_repr */
|
||||
uinteger_repr_len, /* len_string_repr */
|
||||
|
||||
NULL, /* set_value_byte_array */
|
||||
{ NULL }, /* union set_value */
|
||||
|
||||
NULL, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
|
@ -1909,7 +1929,8 @@ ftype_register_integers(void)
|
|||
eui64_to_repr, /* val_to_string_repr */
|
||||
eui64_repr_len, /* len_string_repr */
|
||||
|
||||
NULL, /* set_value_byte_array */
|
||||
{ NULL }, /* union set_value */
|
||||
|
||||
NULL, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
|
|
|
@ -185,7 +185,8 @@ ftype_register_ipv4(void)
|
|||
val_to_repr, /* val_to_string_repr */
|
||||
val_repr_len, /* len_string_repr */
|
||||
|
||||
NULL, /* set_value_byte_array */
|
||||
{ NULL }, /* union set_value */
|
||||
|
||||
NULL, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
|
|
|
@ -235,7 +235,8 @@ ftype_register_ipv6(void)
|
|||
ipv6_to_repr, /* val_to_string_repr */
|
||||
ipv6_repr_len, /* len_string_repr */
|
||||
|
||||
NULL, /* set_value_byte_array */
|
||||
{ NULL }, /* union set_value */
|
||||
|
||||
ipv6_fvalue_set, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
|
|
|
@ -39,7 +39,8 @@ ftype_register_none(void)
|
|||
NULL, /* val_to_string_repr */
|
||||
NULL, /* len_string_repr */
|
||||
|
||||
NULL, /* set_value_byte_array */
|
||||
{ NULL }, /* union set_value */
|
||||
|
||||
NULL, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
|
|
|
@ -163,7 +163,8 @@ ftype_register_pcre(void)
|
|||
gregex_to_repr, /* val_to_string_repr */
|
||||
gregex_repr_len, /* len_string_repr */
|
||||
|
||||
NULL, /* set_value_byte_array */
|
||||
{ NULL }, /* union set_value */
|
||||
|
||||
NULL, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
|
|
|
@ -463,7 +463,8 @@ ftype_register_tvbuff(void)
|
|||
val_to_repr, /* val_to_string_repr */
|
||||
val_repr_len, /* len_string_repr */
|
||||
|
||||
NULL, /* set_value_byte_array */
|
||||
{ NULL }, /* union set_value */
|
||||
|
||||
NULL, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
|
|
|
@ -240,7 +240,8 @@ ftype_register_string(void)
|
|||
string_to_repr, /* val_to_string_repr */
|
||||
string_repr_len, /* len_string_repr */
|
||||
|
||||
NULL, /* set_value_byte_array */
|
||||
{ NULL }, /* union set_value */
|
||||
|
||||
NULL, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
|
@ -284,7 +285,8 @@ ftype_register_string(void)
|
|||
string_to_repr, /* val_to_string_repr */
|
||||
string_repr_len, /* len_string_repr */
|
||||
|
||||
NULL, /* set_value_byte_array */
|
||||
{ NULL }, /* union set_value */
|
||||
|
||||
NULL, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
|
@ -328,7 +330,8 @@ ftype_register_string(void)
|
|||
string_to_repr, /* val_to_string_repr */
|
||||
string_repr_len, /* len_string_repr */
|
||||
|
||||
NULL, /* set_value_byte_array */
|
||||
{ NULL }, /* union set_value */
|
||||
|
||||
NULL, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
|
@ -372,7 +375,8 @@ ftype_register_string(void)
|
|||
string_to_repr, /* val_to_string_repr */
|
||||
string_repr_len, /* len_string_repr */
|
||||
|
||||
NULL, /* set_value_byte_array */
|
||||
{ NULL }, /* union set_value */
|
||||
|
||||
NULL, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
NULL, /* set_value_time */
|
||||
|
|
|
@ -395,7 +395,8 @@ ftype_register_time(void)
|
|||
absolute_val_to_repr, /* val_to_string_repr */
|
||||
absolute_val_repr_len, /* len_string_repr */
|
||||
|
||||
NULL, /* set_value_byte_array */
|
||||
{ NULL }, /* union set_value */
|
||||
|
||||
NULL, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
time_fvalue_set, /* set_value_time */
|
||||
|
@ -439,7 +440,8 @@ ftype_register_time(void)
|
|||
relative_val_to_repr, /* val_to_string_repr */
|
||||
relative_val_repr_len, /* len_string_repr */
|
||||
|
||||
NULL, /* set_value_byte_array */
|
||||
{ NULL }, /* union set_value */
|
||||
|
||||
NULL, /* set_value_bytes */
|
||||
NULL, /* set_value_guid */
|
||||
time_fvalue_set, /* set_value_time */
|
||||
|
|
|
@ -90,8 +90,11 @@ struct _ftype_t {
|
|||
FvalueToStringRepr val_to_string_repr;
|
||||
FvalueStringReprLen len_string_repr;
|
||||
|
||||
union {
|
||||
FvalueSetByteArrayFunc set_value_byte_array;
|
||||
} set_value;
|
||||
|
||||
/* could be union */
|
||||
FvalueSetByteArrayFunc set_value_byte_array;
|
||||
FvalueSetBytesFunc set_value_bytes;
|
||||
FvalueSetGuidFunc set_value_guid;
|
||||
FvalueSetTimeFunc set_value_time;
|
||||
|
|
|
@ -499,8 +499,13 @@ fvalue_slice(fvalue_t *fv, drange_t *d_range)
|
|||
void
|
||||
fvalue_set_byte_array(fvalue_t *fv, GByteArray *value)
|
||||
{
|
||||
g_assert(fv->ftype->set_value_byte_array);
|
||||
fv->ftype->set_value_byte_array(fv, value);
|
||||
g_assert(fv->ftype->ftype == FT_BYTES ||
|
||||
fv->ftype->ftype == FT_UINT_BYTES ||
|
||||
fv->ftype->ftype == FT_OID ||
|
||||
fv->ftype->ftype == FT_REL_OID ||
|
||||
fv->ftype->ftype == FT_SYSTEM_ID);
|
||||
g_assert(fv->ftype->set_value.set_value_byte_array);
|
||||
fv->ftype->set_value.set_value_byte_array(fv, value);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
Loading…
Reference in New Issue