in bindings/scripts/v8_dictionary.py [0:0]
def member_impl_context(member, interfaces_info, header_includes,
header_forward_decls):
idl_type = unwrap_nullable_if_needed(member.idl_type)
cpp_name = to_snake_case(v8_utilities.cpp_name(member))
nullable_indicator_name = None
if not idl_type.cpp_type_has_null_value:
nullable_indicator_name = 'has_' + cpp_name + '_'
def has_method_expression():
if nullable_indicator_name:
return nullable_indicator_name
if idl_type.is_union_type or idl_type.is_enum or idl_type.is_string_type:
return '!%s_.IsNull()' % cpp_name
if idl_type.name in ['Any', 'Object']:
return '!({0}_.IsEmpty() || {0}_.IsNull() || {0}_.IsUndefined())'.format(cpp_name)
if idl_type.name == 'Dictionary':
return '!%s_.IsUndefinedOrNull()' % cpp_name
return '%s_' % cpp_name
cpp_default_value = None
if member.default_value and not member.default_value.is_null:
cpp_default_value = idl_type.literal_cpp_value(member.default_value)
forward_decl_name = idl_type.impl_forward_declaration_name
if forward_decl_name:
includes.update(idl_type.impl_includes_for_type(interfaces_info))
header_forward_decls.add(forward_decl_name)
else:
header_includes.update(idl_type.impl_includes_for_type(interfaces_info))
setter_value = 'value'
if idl_type.is_array_buffer_view_or_typed_array:
setter_value += '.View()'
non_null_type = idl_type.inner_type if idl_type.is_nullable else idl_type
setter_inline = 'inline ' if (
non_null_type.is_basic_type or
non_null_type.is_enum or
non_null_type.is_wrapper_type) else ''
return {
'cpp_default_value': cpp_default_value,
'cpp_name': cpp_name,
'getter_expression': cpp_name + '_',
'getter_name': getter_name_for_dictionary_member(member),
'has_method_expression': has_method_expression(),
'has_method_name': has_method_name_for_dictionary_member(member),
'is_nullable': idl_type.is_nullable,
'is_traceable': idl_type.is_traceable,
'member_cpp_type': idl_type.cpp_type_args(used_in_cpp_sequence=True),
'null_setter_name': null_setter_name_for_dictionary_member(member),
'nullable_indicator_name': nullable_indicator_name,
'rvalue_cpp_type': idl_type.cpp_type_args(used_as_rvalue_type=True),
'setter_inline': setter_inline,
'setter_name': setter_name_for_dictionary_member(member),
'setter_value': setter_value,
}