From 37008b7fa16837d04c1658868646cad681cbe035 Mon Sep 17 00:00:00 2001 From: Mason Reed Date: Wed, 11 Feb 2026 18:04:07 -0800 Subject: Add BNTL utility plugin Allow users to easily create, diff, dump and validate type libraries Supports the following formats: - C header files (via core type parsers) - Binary files (collects exported and imported functions) - WinMD files (via `windows-metadata` crate) - Existing type library files (for easy fixups) - Apiset files (to resolve through forwarded windows dlls) Can be invoked as a regular plugin via UI commands or via CLI. Processing of type libraries inherently requires external linking, processing will automatically merge and deduplicate colliding type libraries so prefer to use inside a project or a directory and process all information (for a given platform) at once, rather than smaller invocations. --- plugins/bntl_utils/src/templates/validate.html | 101 +++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 plugins/bntl_utils/src/templates/validate.html (limited to 'plugins/bntl_utils/src/templates/validate.html') diff --git a/plugins/bntl_utils/src/templates/validate.html b/plugins/bntl_utils/src/templates/validate.html new file mode 100644 index 00000000..e37af45b --- /dev/null +++ b/plugins/bntl_utils/src/templates/validate.html @@ -0,0 +1,101 @@ + + + + {# palette() is reading from the QT style sheet FYI #} + + + + +
+

Type Library Validation Report

+
+ +{% for issue in issues %} +
+ + {% if issue.DuplicateGUID %} + Duplicate GUID + The GUID {{ issue.DuplicateGUID.guid }} is already used by {{ issue.DuplicateGUID.existing_library }}. + + {% elif issue.DuplicateDependencyName %} + Dependency Name Collision + The name {{ issue.DuplicateDependencyName.name }} is already provided by {{ issue.DuplicateDependencyName.existing_library }}. + + {% elif issue.InvalidMetadata %} + Invalid Metadata + Key: {{ issue.InvalidMetadata.key }} | Issue: {{ issue.InvalidMetadata.issue }} + + {% elif issue.DuplicateOrdinal %} + Duplicate Ordinal + Ordinal #{{ issue.DuplicateOrdinal.ordinal }} is assigned to {{ issue.DuplicateOrdinal.existing_name }} and {{ issue.DuplicateOrdinal.duplicate_name }}. + + {% elif issue.NoPlatform %} + Missing Platform + The type library has no target platform associated with it. + + {% elif issue.UnresolvedExternalReference %} + Unresolved External Reference + Type {{ issue.UnresolvedExternalReference.name }} (in {{ issue.UnresolvedExternalReference.container }}) has no source. + + {% elif issue.UnresolvedSourceReference %} + Unresolved Source Reference + Type {{ issue.UnresolvedSourceReference.name }} was not found in expected source {{ issue.UnresolvedSourceReference.source }}. + + {% elif issue.UnresolvedTypeLibrary %} + Unresolved Type Library + Could not find dependency library file for {{ issue.UnresolvedTypeLibrary.name }}. + {% endif %} + +
+{% endfor %} + + + \ No newline at end of file -- cgit v1.3.1