1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
#!/usr/bin/env perl
use warnings;
use 5.012;
use Template::Tiny;
use Path::Class qw(file);
use inc::ZMQ2::ContextWrappers;
use inc::ZMQ2::SocketWrappers;
use inc::ZMQ3::ContextWrappers;
use inc::ZMQ3::SocketWrappers;
use inc::ZMQ4::ContextWrappers;
use inc::ZMQ4::SocketWrappers;
use inc::ZMQ4_1::ContextWrappers;
use inc::ZMQ4_1::SocketWrappers;
my @wrappers;
for my $zmqver (qw(ZMQ2 ZMQ3 ZMQ4 ZMQ4_1)) {
my $context_wrapper = "inc::${zmqver}::ContextWrappers";
my $socket_wrapper = "inc::${zmqver}::SocketWrappers";
push @wrappers, $context_wrapper->new( zmqver => $zmqver );
push @wrappers, $socket_wrapper->new( zmqver => $zmqver );
}
gen_module($_) for @wrappers;
sub gen_module {
my ($wrapper) = @_;
my $socket_check =
q(if ($_[0]->socket_ptr == -1) {
carp "Operation on closed socket";
return;
});
my $api_wrappers = $wrapper->wrappers;
my %tt_vars = (
date => split("\n", scalar(qx{date -u})),
zmqver => $wrapper->zmqver,
closed_socket_check => $socket_check,
api_methods => $wrapper->api_methods,
lib_imports => $wrapper->lib_imports,
%$api_wrappers,
);
my $input = $wrapper->template->slurp();
# Processing twice so template tokens used in
# zmq function wrappers also get interoplated
my $output;
Template::Tiny->new->process(\$input, \%tt_vars, \$output);
Template::Tiny->new->process(\$output, \%tt_vars, \$output);
my $target = $wrapper->target;
say "Generating '$target'";
$target->spew($output)
}
|