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

Side by Side Diff: webkit/port/bindings/scripts/IDLParser.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 # 5 #
6 # This file is part of the KDE project 6 # This file is part of the KDE project
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 23 matching lines...) Expand all
34 34
35 # Helper variables 35 # Helper variables
36 my @temporaryContent = ""; 36 my @temporaryContent = "";
37 37
38 my $parseMode = MODE_UNDEF; 38 my $parseMode = MODE_UNDEF;
39 my $preservedParseMode = MODE_UNDEF; 39 my $preservedParseMode = MODE_UNDEF;
40 40
41 my $beQuiet; # Should not display anything on STDOUT? 41 my $beQuiet; # Should not display anything on STDOUT?
42 my $document = 0; # Will hold the resulting 'idlDocument' 42 my $document = 0; # Will hold the resulting 'idlDocument'
43 43
44 my $directive = "";
45
44 # Default Constructor 46 # Default Constructor
45 sub new 47 sub new
46 { 48 {
47 my $object = shift; 49 my $object = shift;
48 my $reference = { }; 50 my $reference = { };
49 51
50 $document = 0; 52 $document = 0;
51 $beQuiet = shift; 53 $beQuiet = shift;
52 54
53 bless($reference, $object); 55 bless($reference, $object);
54 return $reference; 56 return $reference;
55 } 57 }
56 58
59
60 sub ParseInheritance
Mads Ager (chromium) 2008/09/23 06:45:09 Add a one line comment stating what the return val
61 {
62 my $object = shift;
63 my $fileName = shift;
64 my $defines = shift;
65 my $preprocessor = shift;
66
67 $directive = "inheritance";
68 return $object->ParseImpl($fileName, $defines, $preprocessor);
69 }
70
57 # Returns the parsed 'idlDocument' 71 # Returns the parsed 'idlDocument'
58 sub Parse 72 sub Parse
59 { 73 {
60 my $object = shift; 74 my $object = shift;
61 my $fileName = shift; 75 my $fileName = shift;
62 my $defines = shift; 76 my $defines = shift;
63 my $preprocessor = shift; 77 my $preprocessor = shift;
64 78
79 $directive = "";
80 return $object->ParseImpl($fileName, $defines, $preprocessor);
81 }
82
83 sub ParseImpl
84 {
85 my $object = shift;
86 my $fileName = shift;
87 my $defines = shift;
88 my $preprocessor = shift;
89
65 if (!$preprocessor) { 90 if (!$preprocessor) {
66 $preprocessor = "/usr/bin/gcc -E -P -x c++"; 91 $preprocessor = "/usr/bin/gcc -E -P -x c++";
67 } 92 }
68 93
69 if (!$defines) { 94 if (!$defines) {
70 $defines = ""; 95 $defines = "";
71 } 96 }
72 97
73 print " | *** Starting to parse $fileName...\n |\n" unless $beQuiet; 98 print " | *** Starting to parse $fileName...\n |\n" unless $beQuiet;
74 99
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 # Inheritance detection 256 # Inheritance detection
232 my @interfaceParents = split(/,/, $interfaceBase); 257 my @interfaceParents = split(/,/, $interfaceBase);
233 foreach(@interfaceParents) { 258 foreach(@interfaceParents) {
234 my $line = $_; 259 my $line = $_;
235 $line =~ s/\s*//g; 260 $line =~ s/\s*//g;
236 261
237 my $arrayRef = $dataNode->parents; 262 my $arrayRef = $dataNode->parents;
238 push(@$arrayRef, $line); 263 push(@$arrayRef, $line);
239 } 264 }
240 265
266 return if ($directive eq "inheritance");
267
241 $interfaceData =~ s/[\n\r]/ /g; 268 $interfaceData =~ s/[\n\r]/ /g;
242 my @interfaceMethods = split(/;/, $interfaceData); 269 my @interfaceMethods = split(/;/, $interfaceData);
243 270
244 foreach my $line (@interfaceMethods) { 271 foreach my $line (@interfaceMethods) {
245 if ($line =~ /[ \t]attribute[ \t]/) { 272 if ($line =~ /[ \t]attribute[ \t]/) {
246 $line =~ /$IDLStructure::interfaceAttributeSelector/; 273 $line =~ /$IDLStructure::interfaceAttributeSelector/;
247 274
248 my $attributeType = (defined($1) ? $1 : die("Parsing error!\nSou rce:\n$line\n)")); 275 my $attributeType = (defined($1) ? $1 : die("Parsing error!\nSou rce:\n$line\n)"));
249 my $attributeExtendedAttributes = (defined($2) ? $2 : " "); chop ($attributeExtendedAttributes); 276 my $attributeExtendedAttributes = (defined($2) ? $2 : " "); chop ($attributeExtendedAttributes);
250 277
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
405 432
406 # FIXME: Check if alias is already in aliases 433 # FIXME: Check if alias is already in aliases
407 my $aliases = $document->aliases; 434 my $aliases = $document->aliases;
408 $aliases->{$interfaceName} = $wrapperName; 435 $aliases->{$interfaceName} = $wrapperName;
409 } 436 }
410 437
411 @temporaryContent = ""; 438 @temporaryContent = "";
412 } 439 }
413 440
414 1; 441 1;
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698