aboutsummaryrefslogtreecommitdiffstats
path: root/tools/pidl/lib/Parse/Pidl/Compat.pm
diff options
context:
space:
mode:
Diffstat (limited to 'tools/pidl/lib/Parse/Pidl/Compat.pm')
-rw-r--r--tools/pidl/lib/Parse/Pidl/Compat.pm203
1 files changed, 0 insertions, 203 deletions
diff --git a/tools/pidl/lib/Parse/Pidl/Compat.pm b/tools/pidl/lib/Parse/Pidl/Compat.pm
deleted file mode 100644
index 39cb67fd71..0000000000
--- a/tools/pidl/lib/Parse/Pidl/Compat.pm
+++ /dev/null
@@ -1,203 +0,0 @@
-###################################################
-# IDL Compatibility checker
-# Copyright jelmer@samba.org 2005
-# released under the GNU GPL
-
-package Parse::Pidl::Compat;
-
-use Parse::Pidl::Util qw(has_property);
-use strict;
-
-my %supported_properties = (
- # interface
- "helpstring" => ["INTERFACE", "FUNCTION"],
- "version" => ["INTERFACE"],
- "uuid" => ["INTERFACE"],
- "endpoint" => ["INTERFACE"],
- "pointer_default" => ["INTERFACE"],
-
- # dcom
- "object" => ["INTERFACE"],
- "local" => ["INTERFACE", "FUNCTION"],
- "iid_is" => ["ELEMENT"],
- "call_as" => ["FUNCTION"],
- "idempotent" => ["FUNCTION"],
-
- # function
- "in" => ["ELEMENT"],
- "out" => ["ELEMENT"],
-
- # pointer
- "ref" => ["ELEMENT"],
- "ptr" => ["ELEMENT"],
- "unique" => ["ELEMENT"],
- "ignore" => ["ELEMENT"],
-
- "value" => ["ELEMENT"],
-
- # generic
- "public" => ["FUNCTION", "TYPEDEF"],
- "nopush" => ["FUNCTION", "TYPEDEF"],
- "nopull" => ["FUNCTION", "TYPEDEF"],
- "noprint" => ["FUNCTION", "TYPEDEF"],
- "noejs" => ["FUNCTION", "TYPEDEF"],
-
- # union
- "switch_is" => ["ELEMENT"],
- "switch_type" => ["ELEMENT", "TYPEDEF"],
- "case" => ["ELEMENT"],
- "default" => ["ELEMENT"],
-
- # subcontext
- "subcontext" => ["ELEMENT"],
- "subcontext_size" => ["ELEMENT"],
-
- # enum
- "enum16bit" => ["TYPEDEF"],
- "v1_enum" => ["TYPEDEF"],
-
- # bitmap
- "bitmap8bit" => ["TYPEDEF"],
- "bitmap16bit" => ["TYPEDEF"],
- "bitmap32bit" => ["TYPEDEF"],
- "bitmap64bit" => ["TYPEDEF"],
-
- # array
- "range" => ["ELEMENT"],
- "size_is" => ["ELEMENT"],
- "string" => ["ELEMENT"],
- "noheader" => ["ELEMENT"],
- "charset" => ["ELEMENT"],
- "length_is" => ["ELEMENT"],
-);
-
-
-my($res);
-
-sub warning($$)
-{
- my $l = shift;
- my $m = shift;
-
- print "$l->{FILE}:$l->{LINE}:Warning:$m\n";
-}
-
-sub error($$)
-{
- my ($l,$m) = @_;
- print "$l->{FILE}:$l->{LINE}:$m\n";
-}
-
-sub CheckTypedef($)
-{
- my $td = shift;
-
- if (has_property($td, "nodiscriminant")) {
- error($td, "nodiscriminant property not supported");
- }
-
- if ($td->{TYPE} eq "BITMAP") {
- warning($td, "converting bitmap to scalar");
- #FIXME
- }
-
- if (has_property($td, "gensize")) {
- warning($td, "ignoring gensize() property. ");
- }
-
- if (has_property($td, "enum8bit") and has_property($td, "enum16bit")) {
- warning($td, "8 and 16 bit enums not supported, converting to scalar");
- #FIXME
- }
-
- StripProperties($td);
-}
-
-sub CheckElement($)
-{
- my $e = shift;
-
- if (has_property($e, "noheader")) {
- error($e, "noheader property not supported");
- return;
- }
-
- if (has_property($e, "subcontext")) {
- warning($e, "converting subcontext to byte array");
- #FIXME
- }
-
- if (has_property($e, "compression")) {
- error($e, "compression() property not supported");
- }
-
- if (has_property($e, "obfuscation")) {
- error($e, "obfuscation() property not supported");
- }
-
- if (has_property($e, "sptr")) {
- error($e, "sptr() pointer property not supported");
- }
-
- if (has_property($e, "relative")) {
- error($e, "relative() pointer property not supported");
- }
-
- if (has_property($td, "flag")) {
- warning($e, "ignoring flag() property");
- }
-
- if (has_property($td, "value")) {
- warning($e, "ignoring value() property");
- }
-
- StripProperties($e);
-}
-
-sub CheckFunction($)
-{
- my $fn = shift;
-
- if (has_property($fn, "noopnum")) {
- error($fn, "noopnum not converted. Opcodes will be out of sync.");
- }
-
- StripProperties($fn);
-
-
-}
-
-sub CheckInterface($)
-{
- my $if = shift;
-
- if (has_property($if, "pointer_default_top") and
- $if->{PROPERTIES}->{pointer_default_top} ne "ref") {
- error($if, "pointer_default_top() is pidl-specific");
- }
-
- StripProperties($if);
-
- foreach my $x (@{$if->{DATA}}) {
- if ($x->{TYPE} eq "DECLARE") {
- warning($if, "the declare keyword is pidl-specific");
- next;
- }
- }
-}
-
-sub Check($)
-{
- my $pidl = shift;
- my $nidl = [];
- my $res = "";
-
- foreach my $x (@{$pidl}) {
- push (@$nidl, CheckInterface($x))
- if ($x->{TYPE} eq "INTERFACE");
- }
-
- return $res;
-}
-
-1;