mirror of
https://github.com/samba-team/samba.git
synced 2025-11-23 20:23:50 +03:00
r24518: get rid of using ->{ORIGINAL} and move stuff
into subfunctions metze
This commit is contained in:
committed by
Gerald (Jerry) Carter
parent
ee92d47b53
commit
ff7fa11e70
@@ -10,6 +10,7 @@ require Exporter;
|
||||
@EXPORT = qw(is_intree choose_header DeclLong);
|
||||
|
||||
use Parse::Pidl::Util qw(has_property is_constant);
|
||||
use Parse::Pidl::NDR qw(GetNextLevel);
|
||||
use Parse::Pidl::Typelist qw(mapTypeName scalar_is_reference);
|
||||
use strict;
|
||||
|
||||
@@ -34,40 +35,84 @@ sub choose_header($$)
|
||||
return "#include <$out>";
|
||||
}
|
||||
|
||||
sub NumStars($;$)
|
||||
{
|
||||
my ($e, $d) = @_;
|
||||
$d = 0 unless defined($d);
|
||||
my $n = 0;
|
||||
|
||||
foreach my $l (@{$e->{LEVELS}}) {
|
||||
next unless ($l->{TYPE} eq "POINTER");
|
||||
|
||||
my $nl = GetNextLevel($e, $l);
|
||||
next if (defined($nl) and $nl->{TYPE} eq "ARRAY");
|
||||
|
||||
$n++;
|
||||
}
|
||||
|
||||
if ($n >= 1) {
|
||||
$n-- if (scalar_is_reference($e->{TYPE}));
|
||||
}
|
||||
|
||||
foreach my $l (@{$e->{LEVELS}}) {
|
||||
next unless ($l->{TYPE} eq "ARRAY");
|
||||
next if ($l->{IS_FIXED}) and not has_property($e, "charset");
|
||||
$n++;
|
||||
}
|
||||
|
||||
fatal($e->{ORIGINAL}, "Too few pointers $n < $d") if ($n < $d);
|
||||
|
||||
$n -= $d;
|
||||
|
||||
return $n;
|
||||
}
|
||||
|
||||
sub ElementStars($;$)
|
||||
{
|
||||
my ($e, $d) = @_;
|
||||
my $res = "";
|
||||
my $n = 0;
|
||||
|
||||
$n = NumStars($e, $d);
|
||||
$res .= "*" foreach (1..$n);
|
||||
|
||||
return $res;
|
||||
}
|
||||
|
||||
sub ArrayBrackets($)
|
||||
{
|
||||
my ($e) = @_;
|
||||
my $res = "";
|
||||
|
||||
foreach my $l (@{$e->{LEVELS}}) {
|
||||
next unless ($l->{TYPE} eq "ARRAY");
|
||||
next unless ($l->{IS_FIXED}) and not has_property($e, "charset");
|
||||
$res .= "[$l->{SIZE_IS}]";
|
||||
}
|
||||
|
||||
return $res;
|
||||
}
|
||||
|
||||
sub DeclLong($)
|
||||
{
|
||||
my($element) = shift;
|
||||
my $ret = "";
|
||||
my ($e, $d) = shift;
|
||||
my $res = "";
|
||||
|
||||
if (has_property($element, "represent_as")) {
|
||||
$ret.=mapTypeName($element->{PROPERTIES}->{represent_as})." ";
|
||||
if (has_property($e, "represent_as")) {
|
||||
$res .= mapTypeName($e->{PROPERTIES}->{represent_as})." ";
|
||||
} else {
|
||||
if (has_property($element, "charset")) {
|
||||
$ret.="const char";
|
||||
if (has_property($e, "charset")) {
|
||||
$res .= "const char ";
|
||||
} else {
|
||||
$ret.=mapTypeName($element->{TYPE});
|
||||
$res .= mapTypeName($e->{TYPE})." ";
|
||||
}
|
||||
|
||||
$ret.=" ";
|
||||
my $numstar = $element->{ORIGINAL}->{POINTERS};
|
||||
if ($numstar >= 1) {
|
||||
$numstar-- if scalar_is_reference($element->{TYPE});
|
||||
}
|
||||
foreach (@{$element->{ORIGINAL}->{ARRAY_LEN}})
|
||||
{
|
||||
next if is_constant($_) and
|
||||
not has_property($element, "charset");
|
||||
$numstar++;
|
||||
}
|
||||
$ret.="*" foreach (1..$numstar);
|
||||
}
|
||||
$ret.=$element->{NAME};
|
||||
foreach (@{$element->{ORIGINAL}->{ARRAY_LEN}}) {
|
||||
next unless (is_constant($_) and not has_property($element, "charset"));
|
||||
$ret.="[$_]";
|
||||
$res .= ElementStars($e);
|
||||
}
|
||||
$res .= $e->{NAME};
|
||||
$res .= ArrayBrackets($e);
|
||||
|
||||
return $ret;
|
||||
return $res;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
Reference in New Issue
Block a user