svn commit: samba r8934 - in branches/SAMBA_4_0/source/script: .
tpot at samba.org
tpot at samba.org
Tue Aug 2 18:56:18 GMT 2005
Author: tpot
Date: 2005-08-02 18:56:18 +0000 (Tue, 02 Aug 2005)
New Revision: 8934
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=8934
Log:
Some refactoring of smb_interfaces code generator.
Modified:
branches/SAMBA_4_0/source/script/build_smb_interfaces.pl
Changeset:
Modified: branches/SAMBA_4_0/source/script/build_smb_interfaces.pl
===================================================================
--- branches/SAMBA_4_0/source/script/build_smb_interfaces.pl 2005-08-02 18:46:17 UTC (rev 8933)
+++ branches/SAMBA_4_0/source/script/build_smb_interfaces.pl 2005-08-02 18:56:18 UTC (rev 8934)
@@ -11,7 +11,7 @@
my $parser = new smb_interfaces;
$header = $parser->parse($file);
-#use Data::Dumper;
+use Data::Dumper;
#print Dumper($header);
# Create header
@@ -23,9 +23,55 @@
print FILE "#ifndef _ejs_${basename}_h\n";
print FILE "#define _ejs_${basename}_h\n\n";
+sub struct_name($)
+{
+ my $obj = shift;
+ return defined($obj->{STRUCT_NAME}) ? $obj->{STRUCT_NAME} : $obj->{UNION_NAME};
+}
+
+sub prototypes_for($)
+{
+ my $obj = shift;
+ my $name = struct_name($obj);
+
+ print FILE "NTSTATUS ejs_push_$name(struct ejs_rpc *, struct MprVar *, const char *, const uint32_t *);\n";
+ print FILE "NTSTATUS ejs_pull_$name(struct ejs_rpc *, struct MprVar *, const char *, const uint32_t *);\n";
+}
+
+sub pushpull_for($)
+{
+ my $obj = shift;
+ my $name = struct_name($obj);
+
+ print FILE "NTSTATUS ejs_push_$name(struct ejs_rpc *ejs, struct MprVar *v, const char *name, const uint32_t *r)\n";
+ print FILE "{\n";
+
+ print FILE "\tNDR_CHECK(ejs_push_struct_start(ejs, &v, name));\n";
+
+ print FILE "\n\treturn NT_STATUS_OK;\n";
+ print FILE "}\n\n";
+
+ print FILE "NTSTATUS ejs_pull_$name(struct ejs_rpc *ejs, struct MprVar *v, const char *name, const uint32_t *r)\n";
+ print FILE "{\n";
+ print FILE "\treturn NT_STATUS_OK;\n";
+ print FILE "}\n\n";
+}
+
foreach my $x (@{$header}) {
- print FILE "NTSTATUS ejs_push_$x->{NAME}(struct ejs_rpc *, struct MprVar *, const char *, const uint32_t *);\n";
- print FILE "NTSTATUS ejs_pull_$x->{NAME}(struct ejs_rpc *, struct MprVar *, const char *, const uint32_t *);\n";
+
+ # Prototypes for top level structures and unions
+
+ prototypes_for($x);
+
+ # Prototypes for non-anonymous nested structures and unions
+
+ foreach my $e1 (@{$x->{DATA}}) {
+ foreach my $e2 (@{$e1->{DATA}}) {
+ if (defined($e2->{STRUCT_NAME}) or defined($e2->{UNION_NAME})) {
+ prototypes_for($e2);
+ }
+ }
+ }
}
print FILE "#endif\n";
@@ -41,14 +87,7 @@
# Top level functions
foreach my $x (@{$header}) {
- print FILE "NTSTATUS ejs_push_$x->{NAME}(struct ejs_rpc *, struct MprVar *, const char *, const uint32_t *)\n";
- print FILEq "{\n";
- print FILE "\treturn NT_STATUS_OK;\n";
- print FILE "}\n\n";
- print FILE "NTSTATUS ejs_pull_$x->{NAME}(struct ejs_rpc *, struct MprVar *, const char *, const uint32_t *)\n";
- print FILE "{\n";
- print FILE "\treturn NT_STATUS_OK;\n";
- print FILE "}\n\n";
+ pushpull_for($x);
}
close(FILE);
More information about the samba-cvs
mailing list