#! /usr/bin/perl -w
#
# Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies)
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# Library General Public License for more details.
#
# You should have received a copy of the GNU Library General Public License
# along with this library; see the file COPYING.LIB.  If not, write to
# the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.

use strict;

my $file = $ARGV[0];
shift;

my $stub_template = "";
my $stub = "";

my $rtype = "";
my $op = "";

my $rtype_template = quotemeta("#rtype#");
my $op_template = quotemeta("#op#");

print STDERR "Creating RVCT stubs for $file \n";
open(IN, $file) or die "No such file $file";

while ( $_ = <IN> ) {
    if ( /^RVCT\((.*)\)/ ) {
        $stub_template .= $1 . "\n";
    }
    if ( /^DEFINE_STUB_FUNCTION\((.*), (.*)\)/ ) {
        $stub = $stub_template;
        $rtype = quotemeta($1);
        $op = quotemeta($2);
        $stub =~ s/$rtype_template/$rtype/g;
        $stub =~ s/$op_template/$op/g;
        $stub =~ s/\\\*/\*/g;
        print $stub;
    }
}

close(IN);
