X11: Use proto_tree_add_bitmask for generated bitmasks

Change-Id: Idc95500b74452911117be8903fe0bde0c8a6fefa
Reviewed-on: https://code.wireshark.org/review/21173
Reviewed-by: Michael Mann <mmann78@netscape.net>
Petri-Dish: Michael Mann <mmann78@netscape.net>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Anders Broman <a.broman58@gmail.com>
This commit is contained in:
Michael Mann 2016-12-13 07:52:38 -05:00 committed by Anders Broman
parent 8fb828ff0c
commit 85d08e58cc
2 changed files with 2884 additions and 2642 deletions

File diff suppressed because it is too large Load Diff

View File

@ -811,19 +811,17 @@ sub dissect_element($$$$$;$$)
if ($refref->{field}{$fieldname}) {
say $impl $indent."f_$fieldname = $get(tvb, *offsetp);";
}
my $bitmask_field = $fieldname . "_bits";
say $impl $indent."{";
say $impl $indent." proto_item *ti = proto_tree_add_item(t, $regname, tvb, *offsetp, $size, $encoding);";
say $impl $indent." proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle);";
my $bytesize = $info->{'size'};
my $byteencoding = $info->{'encoding'};
say $impl $indent." const int* $bitmask_field [] = {";
my $bit = $enum{$enum_name{$e->att('mask')}}{bit};
for my $val (sort { $a <=> $b } keys %$bit) {
my $item = $regname . '_mask_' . $$bit{$val};
say $impl "$indent proto_tree_add_item(bitmask_tree, $item, tvb, *offsetp, $bytesize, $byteencoding);";
say $impl "$indent$indent&$item,";
}
say $impl $indent." };";
say $impl $indent." proto_tree_add_bitmask(t, tvb, *offsetp, $regname, ett_x11_rectangle, $bitmask_field, $encoding);";
say $impl $indent."}";
say $impl $indent."*offsetp += $size;";
} else {