diff -r 000000000000 -r 83f4b4db085c sbsv1_os/e32toolp/genutil/conv_khronos_openvg_hdr_to_cpp.pl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv1_os/e32toolp/genutil/conv_khronos_openvg_hdr_to_cpp.pl Tue Feb 02 01:39:43 2010 +0200 @@ -0,0 +1,84 @@ +# Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +# All rights reserved. +# This component and the accompanying materials are made available +# under the terms of "Eclipse Public License v1.0" +# which accompanies this distribution, and is available +# at the URL "http://www.eclipse.org/legal/epl-v10.html". +# +# Initial Contributors: +# Nokia Corporation - initial contribution. +# +# Contributors: +# +# Description: +# Convert the given header file from Khronos into a stub implementation file +# +# + +use File::Basename; +use File::Path; + +my $debug = 0; +my $prog = "conv_khronos_openvg_hdr_to_cpp.pl"; +my $source = shift; +my $target = shift; +my $operation_mode = shift; +my @lines; + +if ($debug) { + print "$prog: Args $source $target $operation_mode\n"; +} + +if ("$operation_mode" eq "delete") { + &cleanup(); + exit 0; +} elsif ("$operation_mode" eq "create") { + &setupFiles(); + &generateStubImplementation(); + exit 0; +} else { + print "Usage error: $prog source target [create|delete]\n"; + exit 1; +} + +sub cleanup() + { + unlink "$target"; + } + +sub setupFiles() + { + my $dir; + $dir = dirname($target); + mkpath $dir; + + open(INFILE, "$source") or die "Can't open input file $source; $!\n"; + open(OUTFILE, ">$target") or die "Can't open output file $target; $!\n"; + print OUTFILE '/* Auto-generated: ' . "$prog" . ' v1.0 */' . "\n"; + print OUTFILE '/* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. */' . "\n"; + } + +sub generateStubImplementation() + { + @lines = ; + my $s = ""; + foreach (@lines) { + # Find function prototype lines + if (/^VG[U]?_API_CALL/ || length($s) != 0) { + $s = $s.$_; + if (/;/) { + # Convert the function prototype into a stub function definition + $s =~ s/\;$/ { }/; + # Record the stub functions. There will be a stub implementation + # file which includes these stub functions. This ensures we never + # accidentally miss a new function added to the header file supplied + # as $source. We expect compiler warnings (missing use of arguments, + # absent return value etc.). The aim is to get something which will + # compile so that a DEF file can be generated. + print OUTFILE "$s"; + $s = ""; + } + } + } + + }