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

Side by Side Diff: Source/bindings/scripts/IDLParser.pm

Issue 18636002: Remove multiple inheritance support from the bindings generator (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 5 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
« no previous file with comments | « Source/bindings/scripts/CodeGeneratorV8.pm ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 library is free software; you can redistribute it and/or 6 # This library is free software; you can redistribute it and/or
7 # modify it under the terms of the GNU Library General Public 7 # modify it under the terms of the GNU Library General Public
8 # License as published by the Free Software Foundation; either 8 # License as published by the Free Software Foundation; either
9 # version 2 of the License, or (at your option) any later version. 9 # version 2 of the License, or (at your option) any later version.
10 # 10 #
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 43
44 struct( callbackFunction => { 44 struct( callbackFunction => {
45 name => '$', 45 name => '$',
46 type => '$', 46 type => '$',
47 parameters => '@', 47 parameters => '@',
48 }); 48 });
49 49
50 # Used to represent 'interface' blocks 50 # Used to represent 'interface' blocks
51 struct( domInterface => { 51 struct( domInterface => {
52 name => '$', # Class identifier 52 name => '$', # Class identifier
53 parents => '@', # List of strings 53 parent => '$', # Parent class identifier
54 constants => '@', # List of 'domConstant' 54 constants => '@', # List of 'domConstant'
55 functions => '@', # List of 'domFunction' 55 functions => '@', # List of 'domFunction'
56 attributes => '@', # List of 'domAttribute' 56 attributes => '@', # List of 'domAttribute'
57 extendedAttributes => '$', # Extended attributes 57 extendedAttributes => '$', # Extended attributes
58 constructors => '@', # Constructors, list of 'domFunction' 58 constructors => '@', # Constructors, list of 'domFunction'
59 customConstructors => '@', # Custom constructors, list of 'domFunction' 59 customConstructors => '@', # Custom constructors, list of 'domFunction'
60 isException => '$', # Used for exception interfaces 60 isException => '$', # Used for exception interfaces
61 isCallback => '$', # Used for callback interfaces 61 isCallback => '$', # Used for callback interfaces
62 isPartial => '$', # Used for partial interfaces 62 isPartial => '$', # Used for partial interfaces
63 }); 63 });
(...skipping 444 matching lines...) Expand 10 before | Expand all | Expand 10 after
508 my $self = shift; 508 my $self = shift;
509 my $extendedAttributeList = shift; 509 my $extendedAttributeList = shift;
510 510
511 my $next = $self->nextToken(); 511 my $next = $self->nextToken();
512 if ($next->value() eq "interface") { 512 if ($next->value() eq "interface") {
513 my $interface = domInterface->new(); 513 my $interface = domInterface->new();
514 $self->assertTokenValue($self->getToken(), "interface", __LINE__); 514 $self->assertTokenValue($self->getToken(), "interface", __LINE__);
515 my $interfaceNameToken = $self->getToken(); 515 my $interfaceNameToken = $self->getToken();
516 $self->assertTokenType($interfaceNameToken, IdentifierToken); 516 $self->assertTokenType($interfaceNameToken, IdentifierToken);
517 $interface->name($interfaceNameToken->value()); 517 $interface->name($interfaceNameToken->value());
518 push(@{$interface->parents}, @{$self->parseInheritance()}); 518 $interface->parent($self->parseInheritance());
519 $self->assertTokenValue($self->getToken(), "{", __LINE__); 519 $self->assertTokenValue($self->getToken(), "{", __LINE__);
520 my $interfaceMembers = $self->parseInterfaceMembers(); 520 my $interfaceMembers = $self->parseInterfaceMembers();
521 $self->assertTokenValue($self->getToken(), "}", __LINE__); 521 $self->assertTokenValue($self->getToken(), "}", __LINE__);
522 $self->assertTokenValue($self->getToken(), ";", __LINE__); 522 $self->assertTokenValue($self->getToken(), ";", __LINE__);
523 applyMemberList($interface, $interfaceMembers); 523 applyMemberList($interface, $interfaceMembers);
524 applyExtendedAttributeList($interface, $extendedAttributeList); 524 applyExtendedAttributeList($interface, $extendedAttributeList);
525 return $interface; 525 return $interface;
526 } 526 }
527 $self->assertUnexpectedToken($next->value(), __LINE__); 527 $self->assertUnexpectedToken($next->value(), __LINE__);
528 } 528 }
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
706 my $extendedAttributeList = shift; 706 my $extendedAttributeList = shift;
707 707
708 my $next = $self->nextToken(); 708 my $next = $self->nextToken();
709 if ($next->value() eq "exception") { 709 if ($next->value() eq "exception") {
710 my $interface = domInterface->new(); 710 my $interface = domInterface->new();
711 $self->assertTokenValue($self->getToken(), "exception", __LINE__); 711 $self->assertTokenValue($self->getToken(), "exception", __LINE__);
712 my $exceptionNameToken = $self->getToken(); 712 my $exceptionNameToken = $self->getToken();
713 $self->assertTokenType($exceptionNameToken, IdentifierToken); 713 $self->assertTokenType($exceptionNameToken, IdentifierToken);
714 $interface->name($exceptionNameToken->value()); 714 $interface->name($exceptionNameToken->value());
715 $interface->isException(1); 715 $interface->isException(1);
716 push(@{$interface->parents}, @{$self->parseInheritance()}); 716 $interface->parent($self->parseInheritance());
717 $self->assertTokenValue($self->getToken(), "{", __LINE__); 717 $self->assertTokenValue($self->getToken(), "{", __LINE__);
718 my $exceptionMembers = $self->parseExceptionMembers(); 718 my $exceptionMembers = $self->parseExceptionMembers();
719 $self->assertTokenValue($self->getToken(), "}", __LINE__); 719 $self->assertTokenValue($self->getToken(), "}", __LINE__);
720 $self->assertTokenValue($self->getToken(), ";", __LINE__); 720 $self->assertTokenValue($self->getToken(), ";", __LINE__);
721 applyMemberList($interface, $exceptionMembers); 721 applyMemberList($interface, $exceptionMembers);
722 applyExtendedAttributeList($interface, $extendedAttributeList); 722 applyExtendedAttributeList($interface, $extendedAttributeList);
723 return $interface; 723 return $interface;
724 } 724 }
725 $self->assertUnexpectedToken($next->value(), __LINE__); 725 $self->assertUnexpectedToken($next->value(), __LINE__);
726 } 726 }
(...skipping 15 matching lines...) Expand all
742 } else { 742 } else {
743 last; 743 last;
744 } 744 }
745 } 745 }
746 return \@members; 746 return \@members;
747 } 747 }
748 748
749 sub parseInheritance 749 sub parseInheritance
750 { 750 {
751 my $self = shift; 751 my $self = shift;
752 my @parent = (); 752 my $parent;
753 753
754 my $next = $self->nextToken(); 754 my $next = $self->nextToken();
755 if ($next->value() eq ":") { 755 if ($next->value() eq ":") {
756 $self->assertTokenValue($self->getToken(), ":", __LINE__); 756 $self->assertTokenValue($self->getToken(), ":", __LINE__);
757 my $scopedName = $self->parseScopedName(); 757 $parent = $self->parseScopedName();
758 push(@parent, $scopedName);
759 # Multiple inheritance?
760 push(@parent, @{$self->parseIdentifiers()});
761 } 758 }
762 return \@parent; 759 return $parent;
763 } 760 }
764 761
765 sub parseEnum 762 sub parseEnum
766 { 763 {
767 my $self = shift; 764 my $self = shift;
768 my $extendedAttributeList = shift; # ignored: Extended attributes are not ap plicable to enumerations 765 my $extendedAttributeList = shift; # ignored: Extended attributes are not ap plicable to enumerations
769 766
770 my $next = $self->nextToken(); 767 my $next = $self->nextToken();
771 if ($next->value() eq "enum") { 768 if ($next->value() eq "enum") {
772 my $enum = domEnum->new(); 769 my $enum = domEnum->new();
(...skipping 1460 matching lines...) Expand 10 before | Expand all | Expand 10 after
2233 $customConstructor->overloadedIndex($index++); 2230 $customConstructor->overloadedIndex($index++);
2234 push(@{$interface->customConstructors}, $customConstructor); 2231 push(@{$interface->customConstructors}, $customConstructor);
2235 } 2232 }
2236 delete $extendedAttributeList->{"CustomConstructors"}; 2233 delete $extendedAttributeList->{"CustomConstructors"};
2237 $extendedAttributeList->{"CustomConstructor"} = "VALUE_IS_MISSING"; 2234 $extendedAttributeList->{"CustomConstructor"} = "VALUE_IS_MISSING";
2238 } 2235 }
2239 $interface->extendedAttributes($extendedAttributeList); 2236 $interface->extendedAttributes($extendedAttributeList);
2240 } 2237 }
2241 2238
2242 1; 2239 1;
OLDNEW
« no previous file with comments | « Source/bindings/scripts/CodeGeneratorV8.pm ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698