mozwebidlcodegen 包

模块内容

class mozwebidlcodegen.BuildResult

基类: object

表示处理 WebIDL 文件的结果。

它保存了代码生成期间输出文件生成的摘要。

class mozwebidlcodegen.WebIDLCodegenManager(config_path, webidl_root, inputs, exported_header_dir, codegen_dir, state_path, cache_dir=None, make_deps_path=None, make_deps_target=None)

基类: LoggingMixin

管理 WebIDL 周围的所有代码生成。

为了方便测试,此对象旨在通用且可重用。路径等应该是参数,而不是硬编码。

GLOBAL_DECLARE_FILES = {'BindingNames.h', 'GeneratedAtomList.h', 'GeneratedEventList.h', 'PrototypeList.h', 'RegisterBindings.h', 'RegisterShadowRealmBindings.h', 'RegisterWorkerBindings.h', 'RegisterWorkerDebuggerBindings.h', 'RegisterWorkletBindings.h', 'UnionTypes.h', 'WebIDLPrefs.h', 'WebIDLSerializable.h'}
GLOBAL_DEFINE_FILES = {'BindingNames.cpp', 'PrototypeList.cpp', 'RegisterBindings.cpp', 'RegisterShadowRealmBindings.cpp', 'RegisterWorkerBindings.cpp', 'RegisterWorkerDebuggerBindings.cpp', 'RegisterWorkletBindings.cpp', 'UnionTypes.cpp', 'WebIDLPrefs.cpp', 'WebIDLSerializable.cpp'}
property config
expected_build_output_files()

获取 generate_build_files() 应该写入的文件集。

generate_build_files(*, processes=None)

生成构建所需的文件。

此函数负责生成所有从输入 .webidl 文件派生的 .h/.cpp 文件。请注意,需要构建操作来生成 .webidl 文件,并且这些构建操作在此处明确未捕获:此函数假设所有 .webidl 文件都存在且是最新的。

此例程作为构建的一部分被调用,以确保需要存在的文件存在且是最新的。如果构建依赖项(作为第一次调用此例程的结果生成的)表示一切都是最新的,则可能不会调用此例程。

由于每次调用时重新处理每个 .webidl 的输出都很昂贵,因此我们仅在每次调用时重新生成最少的文件集。确定需要执行哪些操作的规则大致如下

  1. 如果任何 .webidl 发生更改,则重新解析所有 .webidl 文件并重新生成全局派生文件。仅重新生成受修改的 .webidl 文件影响的输出文件 (.h/.cpp)。

  2. 如果非 .webidl 依赖项(Python 文件、配置文件)发生更改,则假定所有内容都已过期并重新生成所有内容。这是因为这些更改可能会全局影响每个输出文件。

  3. 如果输出文件丢失,请通过执行必要的重新生成来确保其存在。

如果processes设置为 None,则使用 multiprocess.Pool 默认值并行运行。如果设置为 1,则不使用额外的进程。

generate_example_files(interface)

为给定接口生成示例文件。

class mozwebidlcodegen.WebIDLCodegenManagerState(fh=None)

基类: dict

保存 WebIDL 代码生成管理器的状态。

状态目前只是一个扩展的字典。状态的内部实现应被视为除 WebIDLCodegenManager 外所有人的黑盒。但我们仍将对其进行记录。

此字典中存储的任何集合都应在dump()方法中被复制并排序。

字段

version

格式的整数版本。这是为了检测状态之间不兼容的更改。在格式更改或语义更改时应将其增加。

webidls

一个字典,保存有关每个已知 WebIDL 输入的信息。键是输入 WebIDL 文件的基名称。值是元数据的字典。这些字典中的键是

  • filename - 输入文件名的完整路径。

  • inputs - 此 webidl 依赖的其他 webidl 文件的完整路径集。

  • outputs - 从此文件创建/派生的完整输出路径集。

  • sha1 - 上次处理时间输入文件名的十六进制 SHA-1。

global_inputs

一个字典,定义影响所有处理的文件。键是完整的文件名。值是上次处理时间的十六进制 SHA-1。

dictionaries_convertible_to_js

可转换为 JS 的字典名称集。

dictionaries_convertible_from_js

可从 JS 转换的字典名称集。

VERSION = 3
dump(fh)

将序列化状态转储到文件句柄。

class mozwebidlcodegen.WebIDLPool(GeneratorState, *, processes=None)

基类: object

将生成负载分配到多个进程,避免冗余的状态复制。

GeneratorState = None
run(filenames)
mozwebidlcodegen.create_build_system_manager(topsrcdir=None, topobjdir=None, dist_dir=None)

为构建系统创建 WebIDLCodegenManager。