def collect_unforgeable_attributes(definition, idl_filename): """Collects [Unforgeable] attributes so that we can define them on sub-interfaces later. The resulting structure is as follows. interfaces_info[interface_name] = { 'unforgeable_attributes': { 'core': [IdlAttribute, ...], 'modules': [IdlAttribute, ...], }, ... } """ interface_info = {} unforgeable_attributes = get_unforgeable_attributes_from_definition( definition) if not unforgeable_attributes: return interface_info if definition.is_partial: interface_basename = idl_filename_to_interface_name( idl_filename) # TODO(yukishiino): [PartialInterfaceImplementedAs] is treated # in interface_dependency_resolver.transfer_extended_attributes. # Come up with a better way to keep them consistent. for attr in unforgeable_attributes: attr.extended_attributes[ 'PartialInterfaceImplementedAs'] = definition.extended_attributes.get( 'ImplementedAs', interface_basename) component = idl_filename_to_component(idl_filename) interface_info['unforgeable_attributes'] = {} interface_info['unforgeable_attributes'][ component] = unforgeable_attributes return interface_info
def collect_unforgeable_attributes(definition, idl_filename): """Collects [Unforgeable] attributes so that we can define them on sub-interfaces later. The resulting structure is as follows. interfaces_info[interface_name] = { 'unforgeable_attributes': { 'core': [IdlAttribute, ...], 'modules': [IdlAttribute, ...], }, ... } """ interface_info = {} unforgeable_attributes = get_unforgeable_attributes_from_definition(definition) if not unforgeable_attributes: return interface_info if definition.is_partial: interface_basename = idl_filename_to_interface_name(idl_filename) # TODO(yukishiino): [PartialInterfaceImplementedAs] is treated # in interface_dependency_resolver.transfer_extended_attributes. # Come up with a better way to keep them consistent. for attr in unforgeable_attributes: attr.extended_attributes['PartialInterfaceImplementedAs'] = definition.extended_attributes.get('ImplementedAs', interface_basename) component = idl_filename_to_component(idl_filename) interface_info['unforgeable_attributes'] = {} interface_info['unforgeable_attributes'][component] = unforgeable_attributes return interface_info
def include_path(idl_filename, implemented_as=None): """Returns relative path to header file in POSIX format; used in includes. POSIX format is used for consistency of output, so reference tests are platform-independent. """ relative_dir = relative_dir_posix(idl_filename) # IDL file basename is used even if only a partial interface file cpp_class_name = implemented_as or idl_filename_to_interface_name(idl_filename) return posixpath.join(relative_dir, cpp_class_name + '.h')
def include_path(idl_filename, implemented_as=None): """Returns relative path to header file in POSIX format; used in includes. POSIX format is used for consistency of output, so reference tests are platform-independent. """ relative_dir = relative_dir_posix(idl_filename) # IDL file basename is used even if only a partial interface file cpp_class_name = implemented_as or idl_filename_to_interface_name( idl_filename) return posixpath.join(relative_dir, cpp_class_name + '.h')
def include_path(idl_filename, implemented_as=None): """Returns relative path to header file in POSIX format; used in includes. POSIX format is used for consistency of output, so reference tests are platform-independent. """ if idl_filename.startswith(gen_path): relative_dir = relative_dir_posix(idl_filename, gen_path) else: relative_dir = relative_dir_posix(idl_filename, source_path) # The generated relative include path might be wrong if the relative path # points to a parent directory in case of shadow build. To avoid jumbled # relative paths use absolute path instead. if relative_dir.startswith(".."): relative_dir = abs(os.path.dirname(idl_filename)) relative_dir = relative_dir.replace(os.path.sep, posixpath.sep) # IDL file basename is used even if only a partial interface file cpp_class_name = implemented_as or idl_filename_to_interface_name(idl_filename) return posixpath.join(relative_dir, cpp_class_name + '.h')