sbsv1_os/e32toolp/genutil/conv_khronos_openvg_hdr_to_cpp.pl
changeset 0 83f4b4db085c
child 1 d4b442d23379
--- /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 = <INFILE>;
+    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 = "";
+		}
+      }       
+    }
+
+  }