410 member_name = interface_id +
'.' + member
411 if member_name
in candidates:
413 member_name = interface_id +
'.' + member_prefix + member
414 if member_name
in candidates:
416 member_name = interface_id +
'.*'
417 if member_name
in candidates:
432def Generate_Blink(output_dir, database, type_registry):
433 blink_filename = os.path.join(output_dir,
'_blink_dartium.dart')
434 blink_file = open(blink_filename,
'w')
436 blink_file.write(HEADER)
438 interfaces = database.GetInterfaces()
439 for interface
in interfaces:
441 resolver_entry =
' if (s == "%s") return Blink%s.instance;\n' % (name,
443 blink_file.write(resolver_entry)
445 blink_file.write(END_RESOLVER)
447 for interface
in interfaces:
450 if interface.parents
and len(
451 interface.parents) > 0
and interface.parents[0].id:
452 extends = interface.parents[0].id
453 class_def = CLASS_DEFINITION_EXTENDS % (name, extends, name)
455 class_def = CLASS_DEFINITION % (name, name)
456 blink_file.write(class_def)
458 analyzed_constructors = AnalyzeConstructor(interface)
459 if analyzed_constructors:
461 elif 'Constructor' in interface.ext_attrs:
472 secondary_parents = database.TransitiveSecondaryParents(
474 for secondary
in secondary_parents:
479 blink_file.write(CLASS_DEFINITION_END)
481 blink_file.write(BLINK_UTILS)
487 if (interface_name
in _additional_methods):
488 (name, arg_count, return_value) = _additional_methods[interface_name]
489 exposed_name =
''.join([
'__get',
'___', name])
if return_value
else name
491 Select_Stub(OPERATION_1,
False) % (exposed_name, interface_name,
497 analyzed_constructors.param_infos)
498 name = analyzed_constructors.js_name
500 name = analyzed_constructors.type_name
502 for callback_index
in range(arg_min_count, arg_max_count):
503 if callback_index == 0:
509 for i
in range(0, callback_index):
510 arguments.append(ARGUMENT_NUM % i)
511 argument_list =
', '.join(arguments)
520 for attribute
in sorted(attributes, key=ConstantOutputOrder):
523 if attribute.is_read_only:
524 if attribute.is_static:
525 class_property = CLASS_STATIC % interface.id
528 (name, class_property, interface.id, name))
532 (name, interface.id, name))
535 Select_Stub(ATTRIBUTE_GETTER, is_native) % (name, interface.id,
538 Select_Stub(ATTRIBUTE_SETTER, is_native) % (name, interface.id,
545 primary_interface=False):
546 analyzeOperations = []
548 for operation
in sorted(operations, key=ConstantOutputOrder):
549 if len(analyzeOperations) == 0:
550 analyzeOperations.append(operation)
552 if analyzeOperations[0].id == operation.id:
554 analyzeOperations.append(operation)
558 analyzeOperations = [operation]
559 if len(analyzeOperations) > 0:
582 analyzed = AnalyzeOperation(interface, analyzeOperations)
585 interface, analyzed):
590 name = analyzed.js_name
594 operation = analyzeOperations[0]
595 if (name.startswith(
'__')
and \
596 (
'getter' in operation.specials
or \
597 'setter' in operation.specials
or \
598 'deleter' in operation.specials)):
599 if name ==
'__propertyQuery__':
601 Select_Stub(OPERATION_PQ, is_native) % (name, interface.id))
603 arg_min_count = arg_max_count
604 if arg_max_count == 2:
606 Select_Stub(OPERATION_1, is_native) % (name, interface.id,
608 elif arg_max_count == 3:
610 Select_Stub(OPERATION_2, is_native) % (name, interface.id,
613 print(
"FATAL ERROR: _blink emitter operator %s.%s" %
614 (interface.id, name))
619 for callback_index
in range(arg_min_count, arg_max_count):
620 if callback_index == 0:
621 if operation.is_static:
622 class_property = CLASS_STATIC % interface.id
625 (name, class_property, interface.id, name))
628 Select_Stub(OPERATION_0, is_native) % (name, interface.id,
632 for i
in range(0, callback_index):
633 arguments.append(ARGUMENT_NUM % i)
634 argument_list =
', '.join(arguments)
635 if operation.is_static:
636 class_property = CLASS_STATIC % interface.id
639 (name, callback_index, argument_list, class_property,
640 interface.id, name, argument_list))
644 (name, callback_index, argument_list, interface.id, name,