summaryrefslogtreecommitdiff
path: root/source4/pidl/lib/Parse/Pidl/Samba/SWIG.pm
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2005-08-21 23:30:17 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:34:17 -0500
commit59b13f9a1d684a632c2c73352f0ec08a63bc0913 (patch)
tree14b0a564e4db3377f7ad2fa1f9671f8e04405962 /source4/pidl/lib/Parse/Pidl/Samba/SWIG.pm
parentefc03df292aa84edb592c22191dbf86cdf8c32d0 (diff)
downloadsamba-59b13f9a1d684a632c2c73352f0ec08a63bc0913.tar.gz
samba-59b13f9a1d684a632c2c73352f0ec08a63bc0913.tar.bz2
samba-59b13f9a1d684a632c2c73352f0ec08a63bc0913.zip
r9460: - Move pidl to lib/. This fixes standalone installation of pidl.
- Update the README - Allow building the docs stand-alone (This used to be commit b56084ce251ab7a35dd1422f38de258e8e1e1477)
Diffstat (limited to 'source4/pidl/lib/Parse/Pidl/Samba/SWIG.pm')
-rw-r--r--source4/pidl/lib/Parse/Pidl/Samba/SWIG.pm76
1 files changed, 76 insertions, 0 deletions
diff --git a/source4/pidl/lib/Parse/Pidl/Samba/SWIG.pm b/source4/pidl/lib/Parse/Pidl/Samba/SWIG.pm
new file mode 100644
index 0000000000..409095804f
--- /dev/null
+++ b/source4/pidl/lib/Parse/Pidl/Samba/SWIG.pm
@@ -0,0 +1,76 @@
+###################################################
+# Samba4 parser generator for swig wrappers
+# Copyright tpot@samba.org 2004,2005
+# released under the GNU GPL
+
+package Parse::Pidl::Samba::SWIG;
+
+use strict;
+
+sub pidl($)
+{
+ print OUT shift;
+}
+
+#####################################################################
+# rewrite autogenerated header file
+sub RewriteHeader($$$)
+{
+ my($idl) = shift;
+ my($input) = shift;
+ my($output) = shift;
+
+ open(IN, "<$input") || die "can't open $input for reading";
+ open(OUT, ">$output") || die "can't open $output for writing";
+
+ pidl "%{\n";
+ pidl "#define data_in in\n";
+ pidl "#define data_out out\n";
+ pidl "%}\n\n";
+
+ while(<IN>) {
+
+ # Rename dom_sid2 to dom_sid as we don't care about the difference
+ # for the swig wrappers.
+
+ s/dom_sid2/dom_sid/g;
+
+ # Copy structure and union definitions
+
+ if (/^(struct|union) .*? {$/ .. /^\};$/) {
+ s/\} (in|out);/\} data_$1;/; # "in" is a Python keyword
+ pidl $_;
+ next;
+ }
+
+ # Copy dcerpc functions
+
+ pidl $_ if /^NTSTATUS dcerpc_.*?\(struct dcerpc_pipe/;
+
+ # Copy interface definitions
+
+ pidl $_
+ if /^\#define DCERPC_.*?_UUID/ or /^\#define DCERPC_.*?_VERSION/;
+ }
+
+ close(OUT);
+}
+
+#####################################################################
+# rewrite autogenerated header file
+sub RewriteC($$$)
+{
+ my($idl) = shift;
+ my($input) = shift;
+ my($output) = shift;
+
+ open(IN, "<$input") || die "can't open $input for reading";
+ open(OUT, ">>$output") || die "can't open $output for writing";
+
+ while(<IN>) {
+ }
+
+ close(OUT);
+}
+
+1;