Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(498)

Side by Side Diff: webkit/port/bindings/scripts/CodeGenerator.pm

Issue 3195: Use static type information from IDL to streamline the wrapping and unwrappin... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 12 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 # 1 #
2 # KDOM IDL parser 2 # KDOM IDL parser
3 # 3 #
4 # Copyright (C) 2005 Nikolas Zimmermann <wildfox@kde.org> 4 # Copyright (C) 2005 Nikolas Zimmermann <wildfox@kde.org>
5 # Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com> 5 # Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
6 # 6 #
7 # This file is part of the KDE project 7 # This file is part of the KDE project
8 # 8 #
9 # This library is free software; you can redistribute it and/or 9 # This library is free software; you can redistribute it and/or
10 # modify it under the terms of the GNU Library General Public 10 # modify it under the terms of the GNU Library General Public
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 $codeGenerator->GenerateModule($useDocument, $defines); 108 $codeGenerator->GenerateModule($useDocument, $defines);
109 109
110 my $classes = $useDocument->classes; 110 my $classes = $useDocument->classes;
111 foreach my $class (@$classes) { 111 foreach my $class (@$classes) {
112 print "Generating $useGenerator bindings code for IDL interface \"" . $c lass->name . "\"...\n" if $verbose; 112 print "Generating $useGenerator bindings code for IDL interface \"" . $c lass->name . "\"...\n" if $verbose;
113 $codeGenerator->GenerateInterface($class, $defines); 113 $codeGenerator->GenerateInterface($class, $defines);
114 $codeGenerator->finish(); 114 $codeGenerator->finish();
115 } 115 }
116 } 116 }
117 117
118
119 sub FindParentsRecursively
120 {
121 my $object = shift;
122 my $dataNode = shift;
123 my @parents = ($dataNode->name);
124 foreach (@{$dataNode->parents}) {
125 my $interface = $object->StripModule($_);
126
127 $endCondition = 0;
128 $foundFilename = "";
129 foreach (@{$useDirectories}) {
130 $object->ScanDirectory("$interface.idl", $_, $_, 0) if ($foundFilename eq "");
131 }
132
133 if ($foundFilename ne "") {
134 print " | |> Parsing parent IDL \"$foundFilename\" for interface \"$int erface\"\n" if $verbose;
135
136 # Step #2: Parse the found IDL file (in quiet mode).
137 my $parser = IDLParser->new(1);
138 my $document = $parser->ParseInheritance($foundFilename, $defines, $prepro cessor);
139
140 foreach my $class (@{$document->classes}) {
141 @parents = (@parents, FindParentsRecursively($object, $class));
142 }
143 } else {
144 die("Could NOT find specified parent interface \"$interface\"!\n")
145 }
146 }
147 return @parents;
148 }
149
150
118 sub AddMethodsConstantsAndAttributesFromParentClasses 151 sub AddMethodsConstantsAndAttributesFromParentClasses
119 { 152 {
120 # For the passed interface, recursively parse all parent 153 # For the passed interface, recursively parse all parent
121 # IDLs in order to find out all inherited properties/methods. 154 # IDLs in order to find out all inherited properties/methods.
122 155
123 my $object = shift; 156 my $object = shift;
124 my $dataNode = shift; 157 my $dataNode = shift;
125 158
126 my @parents = @{$dataNode->parents}; 159 my @parents = @{$dataNode->parents};
127 my $parentsMax = @{$dataNode->parents}; 160 my $parentsMax = @{$dataNode->parents};
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 # Internal Helper 274 # Internal Helper
242 sub ScanDirectory 275 sub ScanDirectory
243 { 276 {
244 my $object = shift; 277 my $object = shift;
245 278
246 my $interface = shift; 279 my $interface = shift;
247 my $directory = shift; 280 my $directory = shift;
248 my $useDirectory = shift; 281 my $useDirectory = shift;
249 my $reportAllFiles = shift; 282 my $reportAllFiles = shift;
250 283
284 print "Scanning interface " . $interface . " in " . $directory . "\n" if $ve rbose;
Mike Belshe 2008/09/23 00:36:13 Do we want this print statement? Or is this for d
Feng Qian 2008/09/23 21:46:04 For debugging purpose, the condition variable $ver
285
251 return if ($endCondition eq 1) and ($reportAllFiles eq 0); 286 return if ($endCondition eq 1) and ($reportAllFiles eq 0);
252 287
253 my $sourceRoot = $ENV{SOURCE_ROOT}; 288 my $sourceRoot = $ENV{SOURCE_ROOT};
254 my $thisDir = $sourceRoot ? "$sourceRoot/$directory" : $directory; 289 my $thisDir = $sourceRoot ? "$sourceRoot/$directory" : $directory;
255 290
256 opendir(DIR, $thisDir) or die "[ERROR] Can't open directory $thisDir: \"$!\" \n"; 291 opendir(DIR, $thisDir) or die "[ERROR] Can't open directory $thisDir: \"$!\" \n";
257 292
258 my @names = readdir(DIR) or die "[ERROR] Cant't read directory $thisDir \"$! \"\n"; 293 my @names = readdir(DIR) or die "[ERROR] Cant't read directory $thisDir \"$! \"\n";
259 closedir(DIR); 294 closedir(DIR);
260 295
(...skipping 18 matching lines...) Expand all
279 if ($reportAllFiles eq 0) { 314 if ($reportAllFiles eq 0) {
280 $endCondition = 1; 315 $endCondition = 1;
281 } else { 316 } else {
282 push(@foundFilenames, $foundFilename); 317 push(@foundFilenames, $foundFilename);
283 } 318 }
284 } 319 }
285 } 320 }
286 } 321 }
287 322
288 1; 323 1;
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698