#!/usr/bin/env perl

use strict;
use warnings;
use autodie;
use Template;

my $tt2 = Template->new(
  INCLUDE_PATH => 'maint/tt',
);

my @list = map {
  (
    { ffi_type => "uint$_", c_type => "uint${_}_t", perl_type => "UV", zero => "0" },
    { ffi_type => "sint$_", c_type =>  "int${_}_t", perl_type => "IV", zero => "0" },
  )
} (8,16,32,64);

push @list, map { { ffi_type => $_, c_type => $_, perl_type => "NV", zero => "0.0" } } qw( float double );

my $content = '';

foreach my $config (@list)
{
  $tt2->process("accessor.tt", $config, \$content) || die $tt2->error;
}

open my $fh, '>', 'xs/record_simple.c';
$tt2->process("accessor_wrapper.tt", { content => $content }, $fh);
close $fh;