require Exporter;
@ISA = qw(Exporter);
@EXPORT_OK = qw(hasType getType resolveType mapTypeName scalar_is_reference expandAlias
- mapScalarType addType typeIs is_scalar enum_type_fn
+ mapScalarType addType typeIs is_signed is_scalar enum_type_fn
bitmap_type_fn mapType typeHasBody
);
use vars qw($VERSION);
"dlong" => "int64_t",
"udlong" => "uint64_t",
"udlongr" => "uint64_t",
+ "double" => "double",
"pointer" => "void*",
"DATA_BLOB" => "DATA_BLOB",
"string" => "const char *",
return 0;
}
+sub is_signed($)
+{
+ my $t = shift;
+
+ return ($t eq "int8"
+ or $t eq "int16"
+ or $t eq "int32"
+ or $t eq "dlong"
+ or $t eq "int"
+ or $t eq "long"
+ or $t eq "short");
+}
+
sub is_scalar($)
{
sub is_scalar($);
addType({
NAME => $_,
TYPE => "TYPEDEF",
+ BASEFILE => "<builtin>",
DATA => {
TYPE => "SCALAR",
NAME => $_
return mapType($dt, $dt->{NAME});
}
-sub LoadIdl($)
+sub LoadIdl($;$)
{
- my ($idl) = @_;
+ my $idl = shift;
+ my $basename = shift;
foreach my $x (@{$idl}) {
next if $x->{TYPE} ne "INTERFACE";
addType({
NAME => $x->{NAME},
TYPE => "TYPEDEF",
- DATA => $x
+ DATA => $x,
+ BASEFILE => $basename,
}) if (has_property($x, "object"));
foreach my $y (@{$x->{DATA}}) {
- addType($y) if (
- $y->{TYPE} eq "TYPEDEF"
- or $y->{TYPE} eq "UNION"
- or $y->{TYPE} eq "STRUCT"
- or $y->{TYPE} eq "ENUM"
- or $y->{TYPE} eq "BITMAP");
+ if ($y->{TYPE} eq "TYPEDEF"
+ or $y->{TYPE} eq "UNION"
+ or $y->{TYPE} eq "STRUCT"
+ or $y->{TYPE} eq "ENUM"
+ or $y->{TYPE} eq "BITMAP") {
+ $y->{BASEFILE} = $basename;
+ addType($y);
+ }
}
}
}