################################################### # ESP function wrapper generator # Copyright jelmer@samba.org 2005 # released under the GNU GPL package EspClient; use strict; use pidl::typelist; my($res); sub pidl ($) { $res .= shift; } sub ESPFunction($) { my $d = shift; pidl "static int esp_$d->{NAME}(struct EspRequest *ep, int argc, struct MprVar **argv)\n"; pidl "{\n"; # FIXME pidl "\treturn 0;\n"; pidl "}\n\n"; } ##################################################################### # parse the interface definitions sub ESPInterface($) { my($interface) = shift; my @fns = (); foreach my $d (@{$interface->{FUNCTIONS}}) { next if not defined($d->{OPNUM}); ESPFunction($d); push (@fns, $d->{NAME}); } return @fns; } ##################################################################### # parse a parsed IDL into a C header sub Parse($$) { my($ndr) = shift; my $hdr = shift; my @fns = (); $res = ""; pidl "#include \"$hdr\"\n\n"; pidl "/* ESP wrapper functions auto-generated by pidl */\n\n"; foreach my $x (@{$ndr}) { if ($x->{TYPE} eq "INTERFACE") { push (@fns, ESPInterface($x)); } } pidl "void setup_ejs_functions(void)\n"; pidl "{\n"; foreach (@fns) { pidl "\tespDefineCFunction(NULL, \"$_\", esp_$_, NULL);\n"; } pidl "}\n"; return $res; } 1;