Blame instmac.pl

Packit 8a864e
#! /bin/perl -w
Packit 8a864e
#
Packit 8a864e
# Copyright (c) 1999 Avi Kivity
Packit 8a864e
# instmac.pl --  generate template instantiations
Packit 8a864e
#                derived from James Clark's instmac.m4
Packit 8a864e
#
Packit 8a864e
Packit 8a864e
$index = 0;
Packit 8a864e
$func_index = 0;
Packit 8a864e
Packit 8a864e
sub header
Packit 8a864e
    {
Packit 8a864e
    print <<__HEADER__;
Packit 8a864e
#ifdef SP_NAMESPACE
Packit 8a864e
namespace SP_NAMESPACE {
Packit 8a864e
#endif
Packit 8a864e
Packit 8a864e
Packit 8a864e
#ifdef SP_NAMESPACE
Packit 8a864e
}
Packit 8a864e
#endif
Packit 8a864e
__HEADER__
Packit 8a864e
    }
Packit 8a864e
Packit 8a864e
sub instantiate
Packit 8a864e
    {
Packit 8a864e
    my ($class) = @_;
Packit 8a864e
    print <<__INSTANTIATION__;
Packit 8a864e
#ifdef __DECCXX
Packit 8a864e
#pragma define_template $class
Packit 8a864e
#else
Packit 8a864e
#ifdef __xlC__
Packit 8a864e
#pragma define($class)
Packit 8a864e
#else
Packit 8a864e
#ifdef SP_ANSI_CLASS_INST
Packit 8a864e
template class $class;
Packit 8a864e
#else
Packit 8a864e
typedef $class Dummy_$index;
Packit 8a864e
#endif
Packit 8a864e
#endif
Packit 8a864e
#endif
Packit 8a864e
__INSTANTIATION__
Packit 8a864e
    ++$index;
Packit 8a864e
    }
Packit 8a864e
Packit 8a864e
sub func_instantiate
Packit 8a864e
    {
Packit 8a864e
    my ($a1, $a2, $a3, $a4) = @_;
Packit 8a864e
    print <<__FUNC_INSTANTIATION__;
Packit 8a864e
#ifdef __GNUG__
Packit 8a864e
template void $a1($a2, $a3, $a4);
Packit 8a864e
#else
Packit 8a864e
static
Packit 8a864e
void  func_$func_index ($a2 arg1, $a3 arg2, $a4 arg3) {
Packit 8a864e
(void)$a1(arg1, arg2, arg3);
Packit 8a864e
}
Packit 8a864e
#endif
Packit 8a864e
__FUNC_INSTANTIATION__
Packit 8a864e
    ++$func_index;
Packit 8a864e
    }
Packit 8a864e
Packit 8a864e
header;
Packit 8a864e
while (<ARGV>)
Packit 8a864e
    {
Packit 8a864e
    if (/^__instantiate\((.*)\)\s*$/)
Packit 8a864e
        {
Packit 8a864e
        $arg = $1;
Packit 8a864e
        $arg = $1 if /`(.*)'/;
Packit 8a864e
        instantiate $arg;
Packit 8a864e
        }
Packit 8a864e
    elsif (/^__instantiate\((.*)\)\s*$/)
Packit 8a864e
        {
Packit 8a864e
        die "instantiate_func3 found!";
Packit 8a864e
        }
Packit 8a864e
    else
Packit 8a864e
        {
Packit 8a864e
        print;
Packit 8a864e
        }
Packit 8a864e
    }