| OLD | NEW |
| 1 #!/usr/bin/perl -w | 1 #!/usr/bin/perl -w |
| 2 # | 2 # |
| 3 # Copyright (C) 2005 Apple Computer, Inc. | 3 # Copyright (C) 2005 Apple Computer, Inc. |
| 4 # Copyright (C) 2006 Anders Carlsson <andersca@mac.com> | 4 # Copyright (C) 2006 Anders Carlsson <andersca@mac.com> |
| 5 # | 5 # |
| 6 # This file is part of WebKit | 6 # This file is part of WebKit |
| 7 # | 7 # |
| 8 # This library is free software; you can redistribute it and/or | 8 # This library is free software; you can redistribute it and/or |
| 9 # modify it under the terms of the GNU Library General Public | 9 # modify it under the terms of the GNU Library General Public |
| 10 # License as published by the Free Software Foundation; either | 10 # License as published by the Free Software Foundation; either |
| (...skipping 11 matching lines...) Expand all Loading... |
| 22 # | 22 # |
| 23 | 23 |
| 24 use strict; | 24 use strict; |
| 25 | 25 |
| 26 use File::Path; | 26 use File::Path; |
| 27 use File::Basename; | 27 use File::Basename; |
| 28 use Getopt::Long; | 28 use Getopt::Long; |
| 29 use Text::ParseWords; | 29 use Text::ParseWords; |
| 30 use Cwd; | 30 use Cwd; |
| 31 | 31 |
| 32 use deprecated_idl_parser; | 32 use idl_parser; |
| 33 use deprecated_code_generator_v8; | 33 use code_generator_v8; |
| 34 use deprecated_idl_serializer; | 34 use idl_serializer; |
| 35 | 35 |
| 36 my @idlDirectories; | 36 my @idlDirectories; |
| 37 my $outputDirectory; | 37 my $outputDirectory; |
| 38 my $preprocessor; | 38 my $preprocessor; |
| 39 my $verbose; | 39 my $verbose; |
| 40 my $interfaceDependenciesFile; | 40 my $interfaceDependenciesFile; |
| 41 my $additionalIdlFiles; | 41 my $additionalIdlFiles; |
| 42 my $idlAttributesFile; | 42 my $idlAttributesFile; |
| 43 my $writeFileOnlyIfChanged; | 43 my $writeFileOnlyIfChanged; |
| 44 | 44 |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 97 } | 97 } |
| 98 | 98 |
| 99 if (!$idlFound) { | 99 if (!$idlFound) { |
| 100 # We generate empty .h and .cpp files just to tell build scripts that .h
and .cpp files are created. | 100 # We generate empty .h and .cpp files just to tell build scripts that .h
and .cpp files are created. |
| 101 generateEmptyHeaderAndCpp($targetInterfaceName, $outputDirectory); | 101 generateEmptyHeaderAndCpp($targetInterfaceName, $outputDirectory); |
| 102 exit 0; | 102 exit 0; |
| 103 } | 103 } |
| 104 } | 104 } |
| 105 | 105 |
| 106 # Parse the target IDL file. | 106 # Parse the target IDL file. |
| 107 my $targetParser = deprecated_idl_parser->new(!$verbose); | 107 my $targetParser = idl_parser->new(!$verbose); |
| 108 my $targetDocument = $targetParser->Parse($targetIdlFile, $preprocessor); | 108 my $targetDocument = $targetParser->Parse($targetIdlFile, $preprocessor); |
| 109 | 109 |
| 110 if ($idlAttributesFile) { | 110 if ($idlAttributesFile) { |
| 111 my $idlAttributes = loadIDLAttributes($idlAttributesFile); | 111 my $idlAttributes = loadIDLAttributes($idlAttributesFile); |
| 112 checkIDLAttributes($idlAttributes, $targetDocument, basename($targetIdlFile)
); | 112 checkIDLAttributes($idlAttributes, $targetDocument, basename($targetIdlFile)
); |
| 113 } | 113 } |
| 114 | 114 |
| 115 foreach my $idlFile (@dependencyIdlFiles) { | 115 foreach my $idlFile (@dependencyIdlFiles) { |
| 116 next if $idlFile eq $targetIdlFile; | 116 next if $idlFile eq $targetIdlFile; |
| 117 | 117 |
| 118 my $interfaceName = fileparse(basename($idlFile), ".idl"); | 118 my $interfaceName = fileparse(basename($idlFile), ".idl"); |
| 119 my $parser = deprecated_idl_parser->new(!$verbose); | 119 my $parser = idl_parser->new(!$verbose); |
| 120 my $document = $parser->Parse($idlFile, $preprocessor); | 120 my $document = $parser->Parse($idlFile, $preprocessor); |
| 121 | 121 |
| 122 foreach my $interface (@{$document->interfaces}) { | 122 foreach my $interface (@{$document->interfaces}) { |
| 123 if (!$interface->isPartial || $interface->name eq $targetInterfaceName)
{ | 123 if (!$interface->isPartial || $interface->name eq $targetInterfaceName)
{ |
| 124 my $targetDataNode; | 124 my $targetDataNode; |
| 125 foreach my $interface (@{$targetDocument->interfaces}) { | 125 foreach my $interface (@{$targetDocument->interfaces}) { |
| 126 if ($interface->name eq $targetInterfaceName) { | 126 if ($interface->name eq $targetInterfaceName) { |
| 127 $targetDataNode = $interface; | 127 $targetDataNode = $interface; |
| 128 last; | 128 last; |
| 129 } | 129 } |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 167 } | 167 } |
| 168 } | 168 } |
| 169 } | 169 } |
| 170 | 170 |
| 171 # Serialize to and from JSON to ensure Perl and Python parsers are equivalent, | 171 # Serialize to and from JSON to ensure Perl and Python parsers are equivalent, |
| 172 # as part of porting compiler to Python. See http://crbug.com/242795 | 172 # as part of porting compiler to Python. See http://crbug.com/242795 |
| 173 $targetDocument = deserializeJSON(serializeJSON($targetDocument)); | 173 $targetDocument = deserializeJSON(serializeJSON($targetDocument)); |
| 174 | 174 |
| 175 # Generate desired output for the target IDL file. | 175 # Generate desired output for the target IDL file. |
| 176 my @interfaceIdlFiles = ($targetDocument->fileName(), @dependencyIdlFiles); | 176 my @interfaceIdlFiles = ($targetDocument->fileName(), @dependencyIdlFiles); |
| 177 my $codeGenerator = deprecated_code_generator_v8->new($targetDocument, \@idlDire
ctories, $preprocessor, $verbose, \@interfaceIdlFiles, $writeFileOnlyIfChanged); | 177 my $codeGenerator = code_generator_v8->new($targetDocument, \@idlDirectories, $p
reprocessor, $verbose, \@interfaceIdlFiles, $writeFileOnlyIfChanged); |
| 178 my $interfaces = $targetDocument->interfaces; | 178 my $interfaces = $targetDocument->interfaces; |
| 179 foreach my $interface (@$interfaces) { | 179 foreach my $interface (@$interfaces) { |
| 180 print "Generating bindings code for IDL interface \"" . $interface->name . "
\"...\n" if $verbose; | 180 print "Generating bindings code for IDL interface \"" . $interface->name . "
\"...\n" if $verbose; |
| 181 $codeGenerator->GenerateInterface($interface); | 181 $codeGenerator->GenerateInterface($interface); |
| 182 $codeGenerator->WriteData($interface, $outputDirectory); | 182 $codeGenerator->WriteData($interface, $outputDirectory); |
| 183 } | 183 } |
| 184 | 184 |
| 185 sub generateEmptyHeaderAndCpp | 185 sub generateEmptyHeaderAndCpp |
| 186 { | 186 { |
| 187 my ($targetInterfaceName, $outputDirectory) = @_; | 187 my ($targetInterfaceName, $outputDirectory) = @_; |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 295 last OUTER; | 295 last OUTER; |
| 296 } | 296 } |
| 297 } | 297 } |
| 298 } | 298 } |
| 299 if ($error) { | 299 if ($error) { |
| 300 die "IDL ATTRIBUTE CHECKER ERROR: $error | 300 die "IDL ATTRIBUTE CHECKER ERROR: $error |
| 301 If you want to add a new IDL attribute, you need to add it to bindings/scripts/I
DLAttributes.txt and add explanations to the Blink IDL document (http://chromium
.org/blink/webidl). | 301 If you want to add a new IDL attribute, you need to add it to bindings/scripts/I
DLAttributes.txt and add explanations to the Blink IDL document (http://chromium
.org/blink/webidl). |
| 302 "; | 302 "; |
| 303 } | 303 } |
| 304 } | 304 } |
| OLD | NEW |