OLD | NEW |
1 | 1 |
2 # Copyright (C) 2005, 2006 Nikolas Zimmermann <zimmermann@kde.org> | 2 # Copyright (C) 2005, 2006 Nikolas Zimmermann <zimmermann@kde.org> |
3 # Copyright (C) 2006 Anders Carlsson <andersca@mac.com> | 3 # Copyright (C) 2006 Anders Carlsson <andersca@mac.com> |
4 # Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com> | 4 # Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com> |
5 # Copyright (C) 2006 Alexey Proskuryakov <ap@webkit.org> | 5 # Copyright (C) 2006 Alexey Proskuryakov <ap@webkit.org> |
6 # Copyright (C) 2006 Apple Computer, Inc. | 6 # Copyright (C) 2006 Apple Computer, Inc. |
7 # Copyright (C) 2007 Google Inc. | 7 # Copyright (C) 2007 Google Inc. |
8 # | 8 # |
9 # This file is part of the KDE project | 9 # This file is part of the KDE project |
10 # | 10 # |
(...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
371 if ($function->signature->extendedAttributes->{"v8DoNotCheckSignature"}) { | 371 if ($function->signature->extendedAttributes->{"v8DoNotCheckSignature"}) { |
372 $signature = "v8::Local<v8::Signature>()"; | 372 $signature = "v8::Local<v8::Signature>()"; |
373 } | 373 } |
374 | 374 |
375 my $newTemplateString = GenerateNewFunctionTemplate($function, $dataNode, $sig
nature); | 375 my $newTemplateString = GenerateNewFunctionTemplate($function, $dataNode, $sig
nature); |
376 | 376 |
377 $implIncludes{"v8_proxy.h"} = 1; | 377 $implIncludes{"v8_proxy.h"} = 1; |
378 | 378 |
379 push(@implContentDecls, <<END); | 379 push(@implContentDecls, <<END); |
380 static v8::Handle<v8::Value> ${funcName}AttrGetter(v8::Local<v8::String> name,
const v8::AccessorInfo& info) { | 380 static v8::Handle<v8::Value> ${funcName}AttrGetter(v8::Local<v8::String> name,
const v8::AccessorInfo& info) { |
381 INC_STATS(L\"DOM.$implClassName.$funcName._get\"); | 381 INC_STATS(\"DOM.$implClassName.$funcName._get\"); |
382 static v8::Persistent<v8::FunctionTemplate> private_template = | 382 static v8::Persistent<v8::FunctionTemplate> private_template = |
383 v8::Persistent<v8::FunctionTemplate>::New($newTemplateString); | 383 v8::Persistent<v8::FunctionTemplate>::New($newTemplateString); |
384 v8::Handle<v8::Object> holder = V8Proxy::LookupDOMWrapper(V8ClassIndex::$cla
ssIndex, info.This()); | 384 v8::Handle<v8::Object> holder = V8Proxy::LookupDOMWrapper(V8ClassIndex::$cla
ssIndex, info.This()); |
385 if (holder.IsEmpty()) { | 385 if (holder.IsEmpty()) { |
386 // can only reach here by 'object.__proto__.func', and it should passed | 386 // can only reach here by 'object.__proto__.func', and it should passed |
387 // domain security check already | 387 // domain security check already |
388 | 388 |
389 return private_template->GetFunction(); | 389 return private_template->GetFunction(); |
390 } | 390 } |
391 END | 391 END |
(...skipping 13 matching lines...) Expand all Loading... |
405 | 405 |
406 END | 406 END |
407 } | 407 } |
408 | 408 |
409 sub GenerateConstructorGetter | 409 sub GenerateConstructorGetter |
410 { | 410 { |
411 my $implClassName = shift; | 411 my $implClassName = shift; |
412 | 412 |
413 push(@implContentDecls, <<END); | 413 push(@implContentDecls, <<END); |
414 static v8::Handle<v8::Value> ${implClassName}ConstructorGetter(v8::Local<v8::S
tring> name, const v8::AccessorInfo& info) { | 414 static v8::Handle<v8::Value> ${implClassName}ConstructorGetter(v8::Local<v8::S
tring> name, const v8::AccessorInfo& info) { |
415 INC_STATS(L\"DOM.$implClassName.constructors._get\"); | 415 INC_STATS(\"DOM.$implClassName.constructors._get\"); |
416 v8::Handle<v8::Value> data = info.Data(); | 416 v8::Handle<v8::Value> data = info.Data(); |
417 ASSERT(data->IsNumber()); | 417 ASSERT(data->IsNumber()); |
418 | 418 |
419 V8ClassIndex::V8WrapperType type = V8ClassIndex::FromInt(data->Int32Value())
; | 419 V8ClassIndex::V8WrapperType type = V8ClassIndex::FromInt(data->Int32Value())
; |
420 | 420 |
421 v8::Handle<v8::FunctionTemplate> desc = V8Proxy::GetTemplate(type); | 421 v8::Handle<v8::FunctionTemplate> desc = V8Proxy::GetTemplate(type); |
422 v8::Handle<v8::Function> func = desc->GetFunction(); | 422 v8::Handle<v8::Function> func = desc->GetFunction(); |
423 ASSERT(func->IsFunction()); | 423 ASSERT(func->IsFunction()); |
424 return func; | 424 return func; |
425 } | 425 } |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
466 # Special case for SVGColor | 466 # Special case for SVGColor |
467 if (($implClassName eq "SVGColor") and ($attrName eq "rgbColor")) { | 467 if (($implClassName eq "SVGColor") and ($attrName eq "rgbColor")) { |
468 $attrIsPodType = 0; | 468 $attrIsPodType = 0; |
469 } | 469 } |
470 | 470 |
471 my $getterStringUsesImp = $implClassName ne "double"; | 471 my $getterStringUsesImp = $implClassName ne "double"; |
472 | 472 |
473 # Getter | 473 # Getter |
474 push(@implContentDecls, <<END); | 474 push(@implContentDecls, <<END); |
475 static v8::Handle<v8::Value> ${attrName}AttrGetter(v8::Local<v8::String> name,
const v8::AccessorInfo& info) { | 475 static v8::Handle<v8::Value> ${attrName}AttrGetter(v8::Local<v8::String> name,
const v8::AccessorInfo& info) { |
476 INC_STATS(L\"DOM.$implClassName.$attrName._get\"); | 476 INC_STATS(\"DOM.$implClassName.$attrName._get\"); |
477 END | 477 END |
478 | 478 |
479 if ($isPodType) { | 479 if ($isPodType) { |
480 push(@implContentDecls, <<END); | 480 push(@implContentDecls, <<END); |
481 V8SVGPODTypeWrapper<$implClassName>* imp_wrapper = V8Proxy::ToNativeObject<V
8SVGPODTypeWrapper<$implClassName> >(V8ClassIndex::$classIndex, info.Holder()); | 481 V8SVGPODTypeWrapper<$implClassName>* imp_wrapper = V8Proxy::ToNativeObject<V
8SVGPODTypeWrapper<$implClassName> >(V8ClassIndex::$classIndex, info.Holder()); |
482 $implClassName imp_instance = *imp_wrapper; | 482 $implClassName imp_instance = *imp_wrapper; |
483 END | 483 END |
484 if ($getterStringUsesImp) { | 484 if ($getterStringUsesImp) { |
485 push(@implContentDecls, <<END); | 485 push(@implContentDecls, <<END); |
486 $implClassName* imp = &imp_instance; | 486 $implClassName* imp = &imp_instance; |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
614 sub GenerateReplaceableAttrSetter | 614 sub GenerateReplaceableAttrSetter |
615 { | 615 { |
616 my $implClassName = shift; | 616 my $implClassName = shift; |
617 | 617 |
618 $implIncludes{"v8_proxy.h"} = 1; | 618 $implIncludes{"v8_proxy.h"} = 1; |
619 | 619 |
620 push(@implContentDecls, | 620 push(@implContentDecls, |
621 " static void ${attrName}AttrSetter(v8::Local<v8::String> name," . | 621 " static void ${attrName}AttrSetter(v8::Local<v8::String> name," . |
622 " v8::Local<v8::Value> value, const v8::AccessorInfo& info)\n{\n"); | 622 " v8::Local<v8::Value> value, const v8::AccessorInfo& info)\n{\n"); |
623 | 623 |
624 push(@implContentDecls, " INC_STATS(L\"DOM.$implClassName.$attrName._set\")
;\n"); | 624 push(@implContentDecls, " INC_STATS(\"DOM.$implClassName.$attrName._set\");
\n"); |
625 | 625 |
626 push(@implContentDecls, " v8::Local<v8::String> ${attrName}_string = v8::St
ring::New(\"${attrName}\");\n"); | 626 push(@implContentDecls, " v8::Local<v8::String> ${attrName}_string = v8::St
ring::New(\"${attrName}\");\n"); |
627 push(@implContentDecls, " info.Holder()->Delete(${attrName}_string);\n"); | 627 push(@implContentDecls, " info.Holder()->Delete(${attrName}_string);\n"); |
628 push(@implContentDecls, " info.This()->Set(${attrName}_string, value);\n"); | 628 push(@implContentDecls, " info.This()->Set(${attrName}_string, value);\n"); |
629 push(@implContentDecls, " }\n\n"); | 629 push(@implContentDecls, " }\n\n"); |
630 } | 630 } |
631 | 631 |
632 | 632 |
633 sub GenerateNormalAttrSetter | 633 sub GenerateNormalAttrSetter |
634 { | 634 { |
635 my $attribute = shift; | 635 my $attribute = shift; |
636 my $dataNode = shift; | 636 my $dataNode = shift; |
637 my $classIndex = shift; | 637 my $classIndex = shift; |
638 my $implClassName = shift; | 638 my $implClassName = shift; |
639 | 639 |
640 my $attrExt = $attribute->signature->extendedAttributes; | 640 my $attrExt = $attribute->signature->extendedAttributes; |
641 | 641 |
642 $implIncludes{"v8_proxy.h"} = 1; | 642 $implIncludes{"v8_proxy.h"} = 1; |
643 | 643 |
644 push(@implContentDecls, | 644 push(@implContentDecls, |
645 " static void ${attrName}AttrSetter(v8::Local<v8::String> name," . | 645 " static void ${attrName}AttrSetter(v8::Local<v8::String> name," . |
646 " v8::Local<v8::Value> value, const v8::AccessorInfo& info)\n{\n"); | 646 " v8::Local<v8::Value> value, const v8::AccessorInfo& info)\n{\n"); |
647 | 647 |
648 push(@implContentDecls, " INC_STATS(L\"DOM.$implClassName.$attrName._set\")
;\n"); | 648 push(@implContentDecls, " INC_STATS(\"DOM.$implClassName.$attrName._set\");
\n"); |
649 | 649 |
650 my $isPodType = $codeGenerator->IsPodType($implClassName); | 650 my $isPodType = $codeGenerator->IsPodType($implClassName); |
651 | 651 |
652 if ($isPodType) { | 652 if ($isPodType) { |
653 $implClassName = GetNativeType($implClassName); | 653 $implClassName = GetNativeType($implClassName); |
654 $implIncludes{"V8SVGPODTypeWrapper.h"} = 1; | 654 $implIncludes{"V8SVGPODTypeWrapper.h"} = 1; |
655 push(@implContentDecls, " V8SVGPODTypeWrapper<$implClassName>* wrapper =
V8Proxy::ToNativeObject<V8SVGPODTypeWrapper<$implClassName> >(V8ClassIndex::$cla
ssIndex, info.Holder());\n"); | 655 push(@implContentDecls, " V8SVGPODTypeWrapper<$implClassName>* wrapper =
V8Proxy::ToNativeObject<V8SVGPODTypeWrapper<$implClassName> >(V8ClassIndex::$cla
ssIndex, info.Holder());\n"); |
656 push(@implContentDecls, " $implClassName imp_instance = *wrapper;\n"); | 656 push(@implContentDecls, " $implClassName imp_instance = *wrapper;\n"); |
657 push(@implContentDecls, " $implClassName* imp = &imp_instance;\n"); | 657 push(@implContentDecls, " $implClassName* imp = &imp_instance;\n"); |
658 | 658 |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
751 my $function = shift; | 751 my $function = shift; |
752 my $dataNode = shift; | 752 my $dataNode = shift; |
753 my $classIndex = shift; | 753 my $classIndex = shift; |
754 my $implClassName = shift; | 754 my $implClassName = shift; |
755 | 755 |
756 my $interfaceName = $dataNode->name; | 756 my $interfaceName = $dataNode->name; |
757 my $name = $function->signature->name; | 757 my $name = $function->signature->name; |
758 | 758 |
759 push(@implContentDecls, | 759 push(@implContentDecls, |
760 " static v8::Handle<v8::Value> ${name}Callback(const v8::Arguments& args)\n{\n"
. | 760 " static v8::Handle<v8::Value> ${name}Callback(const v8::Arguments& args)\n{\n"
. |
761 " INC_STATS(L\"DOM.$implClassName.$name\");\n"); | 761 " INC_STATS(\"DOM.$implClassName.$name\");\n"); |
762 | 762 |
763 my $numParameters = @{$function->parameters}; | 763 my $numParameters = @{$function->parameters}; |
764 | 764 |
765 if ($function->signature->extendedAttributes->{"RequiresAllArguments"}) { | 765 if ($function->signature->extendedAttributes->{"RequiresAllArguments"}) { |
766 push(@implContentDecls, | 766 push(@implContentDecls, |
767 " if (args.Length() < $numParameters) return v8::Undefined();\n"); | 767 " if (args.Length() < $numParameters) return v8::Undefined();\n"); |
768 } | 768 } |
769 | 769 |
770 if ($codeGenerator->IsPodType($implClassName)) { | 770 if ($codeGenerator->IsPodType($implClassName)) { |
771 my $nativeClassName = GetNativeType($implClassName); | 771 my $nativeClassName = GetNativeType($implClassName); |
(...skipping 1293 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2065 return 0; | 2065 return 0; |
2066 } | 2066 } |
2067 | 2067 |
2068 sub DebugPrint | 2068 sub DebugPrint |
2069 { | 2069 { |
2070 my $output = shift; | 2070 my $output = shift; |
2071 | 2071 |
2072 print $output; | 2072 print $output; |
2073 print "\n"; | 2073 print "\n"; |
2074 } | 2074 } |
OLD | NEW |