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 的输出都很昂贵,因此我们仅在每次调用时重新生成最少的文件集。确定需要执行哪些操作的规则大致如下
如果任何 .webidl 发生更改,则重新解析所有 .webidl 文件并重新生成全局派生文件。仅重新生成受修改的 .webidl 文件影响的输出文件 (.h/.cpp)。
如果非 .webidl 依赖项(Python 文件、配置文件)发生更改,则假定所有内容都已过期并重新生成所有内容。这是因为这些更改可能会全局影响每个输出文件。
如果输出文件丢失,请通过执行必要的重新生成来确保其存在。
如果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。