mirror of
https://github.com/samba-team/samba.git
synced 2025-10-28 03:33:13 +03:00
r4540: sync enum and bitmap code
metze
This commit is contained in:
committed by
Gerald (Jerry) Carter
parent
7702d0f977
commit
2f3aea72ee
@@ -98,7 +98,7 @@ sub HeaderEnum($$)
|
||||
my($enum) = shift;
|
||||
my($name) = shift;
|
||||
|
||||
util::register_enum($name);
|
||||
util::register_enum($enum, $name);
|
||||
|
||||
$res .= "\nenum $name {\n";
|
||||
$tab_depth++;
|
||||
|
||||
@@ -469,17 +469,14 @@ sub ParseElementPullSwitch($$$$)
|
||||
!util::has_property($utype, "nodiscriminant")) {
|
||||
my $e2 = find_sibling($e, $switch);
|
||||
my $type_decl = $e2->{TYPE};
|
||||
my $type_fn = $e2->{TYPE};
|
||||
pidl "\tif (($ndr_flags) & NDR_SCALARS) {\n";
|
||||
if (util::is_enum($e2->{TYPE})) {
|
||||
$type_decl = util::enum_type_decl($e2);
|
||||
$type_fn = util::enum_type_fn($e2);
|
||||
} elsif (util::is_bitmap($e2->{TYPE})) {
|
||||
$type_decl = util::bitmap_type_decl($e2);
|
||||
$type_fn = util::bitmap_type_fn($e2);
|
||||
}
|
||||
pidl "\t\t$type_decl _level;\n";
|
||||
pidl "\t\tNDR_CHECK(ndr_pull_$type_fn(ndr, &_level));\n";
|
||||
pidl "\t\tNDR_CHECK(ndr_pull_$e2->{TYPE}(ndr, &_level));\n";
|
||||
if ($switch_var =~ /r->in/) {
|
||||
pidl "\t\tif (!(ndr->flags & LIBNDR_FLAG_REF_ALLOC) && _level != $switch_var) {\n";
|
||||
} else {
|
||||
@@ -804,16 +801,11 @@ sub ParseStructPush($)
|
||||
sub ParseEnumPush($)
|
||||
{
|
||||
my($enum) = shift;
|
||||
my($type_fn) = util::enum_type_fn($enum);
|
||||
|
||||
start_flags($enum);
|
||||
|
||||
if (util::has_property($enum->{PARENT}, "v1_enum")) {
|
||||
pidl "\tNDR_CHECK(ndr_push_uint32(ndr, r));\n";
|
||||
} elsif (util::has_property($enum->{PARENT}, "enum8bit")) {
|
||||
pidl "\tNDR_CHECK(ndr_push_uint8(ndr, r));\n";
|
||||
} else {
|
||||
pidl "\tNDR_CHECK(ndr_push_uint16(ndr, r));\n";
|
||||
}
|
||||
pidl "\tNDR_CHECK(ndr_push_$type_fn(ndr, r));\n";
|
||||
|
||||
end_flags($enum);
|
||||
}
|
||||
@@ -823,19 +815,12 @@ sub ParseEnumPush($)
|
||||
sub ParseEnumPull($)
|
||||
{
|
||||
my($enum) = shift;
|
||||
my($type_fn) = util::enum_type_fn($enum);
|
||||
|
||||
start_flags($enum);
|
||||
|
||||
if (util::has_property($enum->{PARENT}, "v1_enum")) {
|
||||
pidl "\tuint32_t v;\n";
|
||||
pidl "\tNDR_CHECK(ndr_pull_uint32(ndr, &v));\n";
|
||||
} elsif (util::has_property($enum->{PARENT}, "enum8bit")) {
|
||||
pidl "\tuint8_t v;\n";
|
||||
pidl "\tNDR_CHECK(ndr_pull_uint8(ndr, &v));\n";
|
||||
} else {
|
||||
pidl "\tuint16_t v;\n";
|
||||
pidl "\tNDR_CHECK(ndr_pull_uint16(ndr, &v));\n";
|
||||
}
|
||||
pidl "\t$type_fn v;\n";
|
||||
pidl "\tNDR_CHECK(ndr_pull_$type_fn(ndr, &v));\n";
|
||||
pidl "\t*r = v;\n";
|
||||
|
||||
end_flags($enum);
|
||||
@@ -873,7 +858,6 @@ sub ParseEnumPrint($)
|
||||
sub ParseBitmapPush($)
|
||||
{
|
||||
my($bitmap) = shift;
|
||||
my($type_decl) = util::bitmap_type_decl($bitmap);
|
||||
my($type_fn) = util::bitmap_type_fn($bitmap);
|
||||
|
||||
start_flags($bitmap);
|
||||
@@ -888,12 +872,11 @@ sub ParseBitmapPush($)
|
||||
sub ParseBitmapPull($)
|
||||
{
|
||||
my($bitmap) = shift;
|
||||
my($type_decl) = util::bitmap_type_decl($bitmap);
|
||||
my($type_fn) = util::bitmap_type_fn($bitmap);
|
||||
|
||||
start_flags($bitmap);
|
||||
|
||||
pidl "\t$type_decl v;\n";
|
||||
pidl "\t$type_fn v;\n";
|
||||
pidl "\tNDR_CHECK(ndr_pull_$type_fn(ndr, &v));\n";
|
||||
pidl "\t*r = v;\n";
|
||||
|
||||
|
||||
@@ -202,10 +202,11 @@ sub property_matches($$$)
|
||||
|
||||
my %enum_list;
|
||||
|
||||
sub register_enum($)
|
||||
sub register_enum($$)
|
||||
{
|
||||
my $enum = shift;
|
||||
my $name = shift;
|
||||
$enum_list{$name} = 1;
|
||||
$enum_list{$name} = $enum;
|
||||
}
|
||||
|
||||
sub is_enum($)
|
||||
@@ -214,16 +215,27 @@ sub is_enum($)
|
||||
return defined $enum_list{$name}
|
||||
}
|
||||
|
||||
sub get_enum($)
|
||||
{
|
||||
my $name = shift;
|
||||
return $enum_list{$name};
|
||||
}
|
||||
|
||||
sub enum_type_decl($)
|
||||
{
|
||||
my $e = shift;
|
||||
return "enum $e->{TYPE}";
|
||||
my $enum = shift;
|
||||
return "enum $enum->{TYPE}";
|
||||
}
|
||||
|
||||
sub enum_type_fn($)
|
||||
{
|
||||
my $e = shift;
|
||||
return "$e->{TYPE}";
|
||||
my $enum = shift;
|
||||
if (util::has_property($enum->{PARENT}, "enum8bit")) {
|
||||
return "uint8";
|
||||
} elsif (util::has_property($enum->{PARENT}, "v1_enum")) {
|
||||
return "uint32";
|
||||
}
|
||||
return "uint16";
|
||||
}
|
||||
|
||||
my %bitmap_list;
|
||||
|
||||
Reference in New Issue
Block a user