#!/usr/local/bin/perl
#
# make variant modelfiles for bem
# scans for {xxx1 xxx2 ... xxxn} (n determined by first {} pair)
# at most one pair of brackets {} on one line

$mname=$ARGV[0];
$mname=~s/.m$//;

open(INP,$ARGV[0]);
num:while(<INP>){
    if(m/^(.*){(.*)}(.*)$/){
	$n=split(' ',$2);
	$nvar=$n;
	last num;
    }
}
if($n == 0){
    print "Keine {}-Konstruktion gefunden - Einfach-Lauf!\n";
    exit 99;
}

for($i=1;$i<=$nvar;$i++){
    $f="OUT$i";
    open($f,">$mname.v$i.m");
}

open(INP,$ARGV[0]);
while(<INP>){
    if(m/^(.*){(.*)}(.*)$/){
	split(' ',$2);
	for($i=1;$i<=$nvar;$i++){
	    $f="OUT$i";
	    print $f $1,$_[$i-1],$3,"\n";
	}
    }
    else{
	for($i=1;$i<=$nvar;$i++){
	    $f="OUT$i";
	    print $f $_;
	}
    }
}

open(INP,$ARGV[1]);
$name=$ARGV[1];
$name=~s/.t$//;
for($i=1;$i<=$nvar;$i++){
    $f="OUT$i";
    open($f,">$name.v$i.t");
}

while(<INP>){
    split(' ');
    if($_[0] eq "define"){
	for($i=1;$i<=$nvar;$i++){
	    $f="OUT$i";
	    print $f "define $_[1] $mname.v$i.m\n";
	}
    }
    else{
	for($i=1;$i<=$nvar;$i++){
	    $f="OUT$i";
	    print $f $_;
	}
    }
}


exit $nvar;
