From 6a54bded53b04881bd21737b7347a7b26d508a9f Mon Sep 17 00:00:00 2001 From: Marwan Aouida Date: Sun, 7 Jun 2026 20:27:47 +0100 Subject: [PATCH 1/3] bindgen: discover + emit non-NCollection template instantiations MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Let template typedefs outside the NCollection family — e.g. math_VectorBase (= math_Vector) and math_MatrixBase (= math_Matrix) — be discovered and compiled. Two coupled changes: - discover.py: add EXTRA_TEMPLATE_CONTAINERS (math_VectorBase, math_MatrixBase) and ADMIT_TEMPLATE_CONTAINERS = NCOLLECTION_CONTAINERS | EXTRA (existing behaviour stays a strict subset, so it cannot regress), plus pass-1 canonical resolution so a method param spelled via a typedef (const math_Vector&) resolves to its canonical container before bailing. Implements the long-standing generic-template-discovery follow-up. - ast/template_args.py: substitute the canonical forward-declaration template parameter name. OCCT forward-declares `template class math_VectorBase;` then defines it with TheItemType; libclang renders a method's self-type param (const math_VectorBase&) using the forward-decl name T, while processTemplate keys templateArgs from the definition (TheItemType), so the T was never substituted and an uncompilable math_VectorBase leaked into select_overload<> signatures and val-dispatch arg.as<> lambdas. Mapping the canonical param name onto the same ordinal fixes every self-type-param site at once. Co-Authored-By: Claude Opus 4.8 (1M context) --- src/ocjs_bindgen/ast/template_args.py | 29 +++++++++++++++ src/ocjs_bindgen/discover.py | 52 +++++++++++++++++++++++---- 2 files changed, 74 insertions(+), 7 deletions(-) diff --git a/src/ocjs_bindgen/ast/template_args.py b/src/ocjs_bindgen/ast/template_args.py index 195268b6..b7aeb4ab 100644 --- a/src/ocjs_bindgen/ast/template_args.py +++ b/src/ocjs_bindgen/ast/template_args.py @@ -165,6 +165,35 @@ def augment_template_args_with_canonical(template_args, template_class): # paths. if param.spelling and param.spelling in augmented: augmented[canonical_key] = augmented[param.spelling] + + # OCCT forward-declares some templates with a DIFFERENT parameter name than + # the definition — e.g. `template class math_VectorBase;` then + # `template class math_VectorBase {...}`. libclang + # renders injected-class-name arguments (a method's `const math_VectorBase&`) + # using the FORWARD-DECLARATION parameter name ("T"), but `template_class` + # here is the definition (parameters named "TheItemType"), so + # `replace_template_args` keyed on "TheItemType" never substitutes the "T" + # in the rendered spelling and emits an uncompilable `math_VectorBase`. + # Map the canonical (first-declaration) parameter names onto the same + # ordinal values so either spelling substitutes. + canonical_class = getattr(template_class, "canonical", None) + if canonical_class is not None and canonical_class != template_class: + canonical_params = [ + c + for c in canonical_class.get_children() + if c.kind + in ( + clang.cindex.CursorKind.TEMPLATE_TYPE_PARAMETER, + clang.cindex.CursorKind.TEMPLATE_NON_TYPE_PARAMETER, + clang.cindex.CursorKind.TEMPLATE_TEMPLATE_PARAMETER, + ) + ] + for ordinal, param in enumerate(canonical_params): + if not param.spelling or param.spelling in augmented: + continue + value = augmented.get(f"type-parameter-0-{ordinal}") + if value is not None: + augmented[param.spelling] = value return augmented diff --git a/src/ocjs_bindgen/discover.py b/src/ocjs_bindgen/discover.py index 9a04def1..547fc529 100644 --- a/src/ocjs_bindgen/discover.py +++ b/src/ocjs_bindgen/discover.py @@ -24,6 +24,23 @@ "NCollection_Vector": "NCollection_DynamicArray", } +# TKMath: non-NCollection template containers also admitted into +# template-instantiation discovery. math_VectorBase (= math_Vector) and +# math_MatrixBase (= math_Matrix) gate the GeomInt/BRepApprox walking-line +# approximators — without the base bound, every ctor taking `const math_Vector&` +# throws "Cannot construct ... due to unbound types" (those approximators were +# excluded for exactly this reason; see bindgen-filters.yaml). Kept as an explicit +# allowlist (not a generic denylist) for a low-risk first landing; widen per-package later. +EXTRA_TEMPLATE_CONTAINERS = frozenset({ + "math_VectorBase", + "math_MatrixBase", +}) + +# Containers admitted into discovery: NCollection (always) + the +# EXTRA_TEMPLATE_CONTAINERS above. Existing behaviour is a strict subset, so +# widening cannot regress it. +ADMIT_TEMPLATE_CONTAINERS = NCOLLECTION_CONTAINERS | EXTRA_TEMPLATE_CONTAINERS + def mangle_template_name(container, arg_spellings): """Convert a template instantiation to a valid C++ identifier. @@ -132,12 +149,33 @@ class is not in the consumer YAML's scope is dropped at link time, return container = CONTAINER_ALIASES.get(decl.spelling, decl.spelling) - if container not in NCOLLECTION_CONTAINERS: - if t.get_num_template_arguments() > 0: - for i in range(t.get_num_template_arguments()): - inner = t.get_template_argument_type(i) - _scan_type_for_ncollection(inner, needed, template_typedef_names, source_class) - return + if container not in ADMIT_TEMPLATE_CONTAINERS: + # The direct declaration may be a typedef/alias whose CANONICAL is an + # admitted template — e.g. `math_Vector` -> `math_VectorBase` + # (TKMath). OCCT V8 spells NCollection params as + # `NCollection_X<...>` directly, so this branch only newly-resolves + # alias-spelled admitted templates (math, and any NCollection referenced + # via a deprecated alias in a signature). Rebind `t`/`container` to the + # canonical so the arg-extraction below sees the real instantiation; + # `_extract_template_args` reads template args positionally + # (`get_template_argument_type`), so it recovers `double` even though + # libclang renders the canonical spelling as `math_VectorBase<>`. + canonical_type = t.get_canonical() + canonical_decl = canonical_type.get_declaration() + canonical_container = None + if canonical_decl and canonical_decl.spelling: + canonical_container = CONTAINER_ALIASES.get( + canonical_decl.spelling, canonical_decl.spelling + ) + if canonical_container in ADMIT_TEMPLATE_CONTAINERS: + t = canonical_type + container = canonical_container + else: + if t.get_num_template_arguments() > 0: + for i in range(t.get_num_template_arguments()): + inner = t.get_template_argument_type(i) + _scan_type_for_ncollection(inner, needed, template_typedef_names, source_class) + return arg_spellings = _extract_template_args(t) if not arg_spellings: @@ -426,7 +464,7 @@ def _type_is_reachable(arg_type, _depth: int = 0) -> bool: continue container, args = parsed canonical_container = CONTAINER_ALIASES.get(container, container) - if canonical_container not in NCOLLECTION_CONTAINERS: + if canonical_container not in ADMIT_TEMPLATE_CONTAINERS: continue # Reject if any template arg references a type in an excluded # package (see _type_is_reachable docstring for the OCCT V8 From 74c96ed1fca25cd2162268e1e1d0213c9ab85c48 Mon Sep 17 00:00:00 2001 From: Marwan Aouida Date: Sun, 7 Jun 2026 20:27:47 +0100 Subject: [PATCH 2/3] libembind: fork inherited overload tables (cross-inheritance aliasing fix) embind keys method overloads by arg-count -> arg-signature only; the `this` type is not in the key. When a derived class registers an override of a method whose overload dispatcher / per-signature map is inherited from a base, ensureOverloadTable / ensureOverloadSignatureTable did not fork an own copy, so the write landed in the base's shared structures. With a base method overridden by multiple subclasses, all of them shared one per-signature slot and the last registrant won -- so the base and non-overriding siblings dispatched to the wrong invoker and threw "Expected null or instance of , got an instance of ". Both helpers now fork inherited overload structures so each registering class owns its own dispatcher / per-signature maps (tagged ocjsSignatureOwner); writes never escape to a base. Non-inherited paths are unchanged. This is distinct from the sub-2b constructor sibling-aliasing handled by predicates/sibling_aliasing.py (that is within one class; this is across inheritance). Regenerated src/patches/libembind-overloading.patch against the vendored stock-emscripten pristine snapshot (round-trips exactly) and updated libembind-overloading.expected.sha256 to the new post-patch result. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../libembind-overloading.expected.sha256 | 2 +- src/patches/libembind-overloading.patch | 137 +++++++++++++----- 2 files changed, 102 insertions(+), 37 deletions(-) diff --git a/src/patches/libembind-overloading.expected.sha256 b/src/patches/libembind-overloading.expected.sha256 index 50715a6b..7e6d604e 100644 --- a/src/patches/libembind-overloading.expected.sha256 +++ b/src/patches/libembind-overloading.expected.sha256 @@ -1 +1 @@ -1c897da69056caa191d539a4e02b32f417bf8a621ae155de51e30e2c2724e4fa \ No newline at end of file +65f6786ef29a5aa5a147875f15316b42a947ca55f1ce978c8862bd71aa5cfad4 \ No newline at end of file diff --git a/src/patches/libembind-overloading.patch b/src/patches/libembind-overloading.patch index 24b30d3e..48b56680 100644 --- a/src/patches/libembind-overloading.patch +++ b/src/patches/libembind-overloading.patch @@ -1,6 +1,6 @@ --- src/lib/libembind.js +++ src/lib/libembind.js -@@ -55,6 +55,107 @@ +@@ -55,23 +55,195 @@ throw new UnboundTypeError(`${message}: ` + unboundTypes.map(getTypeName).join([', '])); }, @@ -81,35 +81,81 @@ + $ensureOverloadSignatureTable__deps: ['$throwBindingError', '$getSignature', '$ensureOverloadTable', '$registeredTypes'], + $ensureOverloadSignatureTable: (proto, methodName, humanName, numArguments) => { + ensureOverloadTable(proto, methodName, humanName); -+ if (undefined !== proto[methodName].overloadTable && undefined !== proto[methodName].overloadTable[numArguments] && undefined === proto[methodName].overloadTable[numArguments].signatures) { -+ var prevFunc = proto[methodName].overloadTable[numArguments]; -+ // Inject an overload resolver function that routes to the appropriate overload based on signatures. -+ proto[methodName].overloadTable[numArguments] = function(...args) { -+ var keys = proto[methodName].overloadTable[args.length].signaturesArray; -+ var signature = getSignature(args, keys); -+ // TODO This check can be removed in -O3 level "unsafe" optimizations. -+ if (!proto[methodName].overloadTable[args.length].signatures.hasOwnProperty(signature)) { -+ var signatures = proto[methodName].overloadTable[args.length].signaturesArray.map(sig => '(' + sig.map(s => typeof s === 'string' ? s : registeredTypes[s].name) + ')'); -+ var params = args.map(arg => (typeof arg === 'object' && arg.constructor && arg.constructor.name) ? arg.constructor.name : typeof arg); -+ throwBindingError(`Function '${humanName}' called with an invalid signature (${params}) - expects one of (${signatures})!`); -+ } -+ return proto[methodName].overloadTable[args.length].signatures[signature].apply(this, args); -+ }; -+ // Move the previous function into the overload signature table. -+ proto[methodName].overloadTable[numArguments].signatures = {}; -+ proto[methodName].overloadTable[numArguments].signatures[prevFunc.signature] = prevFunc; -+ proto[methodName].overloadTable[numArguments].signaturesArray = []; ++ if (undefined === proto[methodName].overloadTable || undefined === proto[methodName].overloadTable[numArguments]) { ++ return; ++ } ++ var prevFunc = proto[methodName].overloadTable[numArguments]; ++ var hasSignatures = undefined !== prevFunc.signatures; ++ // ── OCJS fix (sibling-override overload-table aliasing) ── ++ // If this prototype already owns a per-signature dispatcher, nothing to do. ++ if (hasSignatures && prevFunc.ocjsSignatureOwner === proto) { ++ return; ++ } ++ // Otherwise install a per-signature dispatcher OWNED by this prototype. ++ // `prevFunc` is either a plain member function being promoted (the original ++ // behavior) OR a base class's per-signature dispatcher inherited via the ++ // overloadTable copy made by ensureOverloadTable. In the inherited case its ++ // `signatures` map is shared with the base, so a write here (a derived class ++ // registering its own override) would corrupt the base — and a sibling that ++ // registers the same method later would overwrite the single shared slot, ++ // leaving bases / non-overriding siblings resolving to the wrong invoker ++ // ("Expected instance of "). Forking an owned copy prevents that. ++ // Inject an overload resolver function that routes to the appropriate overload based on signatures. ++ var dispatcher = function(...args) { ++ var keys = proto[methodName].overloadTable[args.length].signaturesArray; ++ var signature = getSignature(args, keys); ++ // TODO This check can be removed in -O3 level "unsafe" optimizations. ++ if (!proto[methodName].overloadTable[args.length].signatures.hasOwnProperty(signature)) { ++ var signatures = proto[methodName].overloadTable[args.length].signaturesArray.map(sig => '(' + sig.map(s => typeof s === 'string' ? s : registeredTypes[s].name) + ')'); ++ var params = args.map(arg => (typeof arg === 'object' && arg.constructor && arg.constructor.name) ? arg.constructor.name : typeof arg); ++ throwBindingError(`Function '${humanName}' called with an invalid signature (${params}) - expects one of (${signatures})!`); ++ } ++ return proto[methodName].overloadTable[args.length].signatures[signature].apply(this, args); ++ }; ++ dispatcher.ocjsSignatureOwner = proto; ++ if (hasSignatures) { ++ // Inherited per-signature dispatcher: copy its maps so writes stay local. ++ dispatcher.signatures = Object.assign({}, prevFunc.signatures); ++ dispatcher.signaturesArray = prevFunc.signaturesArray.slice(); ++ } else { ++ // Plain member function: move it into a fresh overload signature table. ++ dispatcher.signatures = {}; ++ dispatcher.signatures[prevFunc.signature] = prevFunc; ++ dispatcher.signaturesArray = []; + if (prevFunc.signatureArray) { -+ proto[methodName].overloadTable[numArguments].signaturesArray.push(prevFunc.signatureArray); ++ dispatcher.signaturesArray.push(prevFunc.signatureArray); + } + } ++ proto[methodName].overloadTable[numArguments] = dispatcher; + }, + // Creates a function overload resolution table to the given method 'methodName' in the given prototype, // if the overload table doesn't yet exist. $ensureOverloadTable__deps: ['$throwBindingError'], -@@ -63,6 +164,26 @@ - var prevFunc = proto[methodName]; + $ensureOverloadTable: (proto, methodName, humanName) => { +- if (undefined === proto[methodName].overloadTable) { +- var prevFunc = proto[methodName]; ++ // ── OCJS fix (sibling-override overload-table aliasing) ── ++ // If this prototype already OWNS an overload table, nothing to do. ++ if (undefined !== proto[methodName].overloadTable && ++ Object.prototype.hasOwnProperty.call(proto, methodName)) { ++ return; ++ } ++ // Two cases reach here: (1) proto[methodName] is a plain function with no ++ // overload table yet — the first overload registered for this name (original ++ // behavior); (2) proto[methodName] resolves to a BASE class's overload-table ++ // dispatcher, inherited (not own). The base dispatcher's closure captures the ++ // base prototype, so any write a derived class makes to its overloadTable (or ++ // the per-signature maps within) mutates the base's SHARED structures. A ++ // sibling registering the same method then overwrites the single shared slot, ++ // and the base / non-overriding siblings resolve to the wrong (last-writer) ++ // invoker — throwing "Expected instance of ". In both cases install a ++ // dispatcher OWNED by this prototype; for the inherited case seed it with a ++ // shallow copy of the base's overloadTable (per-signature maps are forked ++ // lazily by ensureOverloadSignatureTable). ++ var inheritedTable = (undefined !== proto[methodName].overloadTable) ? proto[methodName] : undefined; ++ var prevFunc = (undefined === proto[methodName].overloadTable) ? proto[methodName] : undefined; ++ { // Inject an overload resolver function that routes to the appropriate overload based on the number of arguments. proto[methodName] = function(...args) { + // ── OCJS bounded C1 extension (Gate-1 hunk 1): trailing-arg arity padding ── @@ -135,7 +181,26 @@ // TODO This check can be removed in -O3 level "unsafe" optimizations. if (!proto[methodName].overloadTable.hasOwnProperty(args.length)) { throwBindingError(`Function '${humanName}' called with an invalid number of arguments (${args.length}) - expects one of (${proto[methodName].overloadTable})!`); -@@ -81,44 +202,82 @@ + } + return proto[methodName].overloadTable[args.length].apply(this, args); + }; +- // Move the previous function into the overload table. + proto[methodName].overloadTable = []; +- proto[methodName].overloadTable[prevFunc.argCount] = prevFunc; ++ if (inheritedTable) { ++ // Inherited from a base: shallow-copy its arity slots so this prototype ++ // owns the table (writes here no longer escape to the base). ++ for (var _arity in inheritedTable.overloadTable) { ++ proto[methodName].overloadTable[_arity] = inheritedTable.overloadTable[_arity]; ++ } ++ } else { ++ // First overload: move the previous plain function into the overload table. ++ proto[methodName].overloadTable[prevFunc.argCount] = prevFunc; ++ } + } + }, + +@@ -81,44 +253,82 @@ name: The name of the symbol that's being exposed. value: The object itself to expose (function, class, ...) numArguments: For functions, specifies the number of arguments the function takes in. For other types, unused and undefined. @@ -234,7 +299,7 @@ } }, -@@ -860,21 +1019,25 @@ +@@ -860,21 +1070,25 @@ _embind_register_function__deps: [ '$craftInvokerFunction', '$exposePublicSymbol', '$heap32VectorToArray', '$AsciiToString', '$replacePublicSymbol', '$embind__requireFunction', @@ -263,7 +328,7 @@ return []; }); }, -@@ -1654,7 +1817,7 @@ +@@ -1654,7 +1868,7 @@ '$makeLegalFunctionName', '$AsciiToString', '$RegisteredClass', '$RegisteredPointer', '$replacePublicSymbol', '$embind__requireFunction', '$throwUnboundTypeError', @@ -272,7 +337,7 @@ _embind_register_class: (rawType, rawPointerType, rawConstPointerType, -@@ -1702,9 +1865,45 @@ +@@ -1702,9 +1916,45 @@ if (undefined === registeredClass.constructor_body) { throw new BindingError(`${name} has no accessible constructor`); } @@ -320,7 +385,7 @@ } return body.apply(this, args); }); -@@ -1777,7 +1976,7 @@ +@@ -1777,7 +2027,7 @@ _embind_register_class_constructor__deps: [ '$heap32VectorToArray', '$embind__requireFunction', '$whenDependentTypesAreResolved', @@ -329,7 +394,7 @@ _embind_register_class_constructor: ( rawClassType, argCount, -@@ -1801,17 +2000,43 @@ +@@ -1801,17 +2051,43 @@ if (undefined === classType.registeredClass.constructor_body) { classType.registeredClass.constructor_body = []; } @@ -347,7 +412,7 @@ throwUnboundTypeError(`Cannot construct ${classType.name} due to unbound types`, rawArgTypes); - }; + } - ++ + if (undefined === classType.registeredClass.constructor_body[argCount - 1]) { + classType.registeredClass.constructor_body[argCount - 1] = { + func: unboundTypesHandler, @@ -359,7 +424,7 @@ + } + + classType.registeredClass.constructor_body[argCount - 1].signatures[rawSignatureString] = unboundTypesHandler; -+ + whenDependentTypesAreResolved([], rawArgTypes, (argTypes) => { // Insert empty slot for context type (argTypes[1]). argTypes.splice(1, 0, null); @@ -378,7 +443,7 @@ return []; }); return []; -@@ -1866,7 +2091,8 @@ +@@ -1866,7 +2142,8 @@ _embind_register_class_function__deps: [ '$craftInvokerFunction', '$heap32VectorToArray', '$AsciiToString', '$embind__requireFunction', '$throwUnboundTypeError', @@ -388,7 +453,7 @@ _embind_register_class_function: (rawClassType, methodName, argCount, -@@ -1900,21 +2126,34 @@ +@@ -1900,21 +2177,34 @@ var proto = classType.registeredClass.instancePrototype; var method = proto[methodName]; @@ -425,7 +490,7 @@ // Replace the initial unbound-handler-stub function with the // appropriate member function, now that all types are resolved. If -@@ -1923,9 +2162,17 @@ +@@ -1923,9 +2213,17 @@ if (undefined === proto[methodName].overloadTable) { // Set argCount in case an overload is registered later memberFunction.argCount = argCount - 2; @@ -444,7 +509,7 @@ } return []; -@@ -2004,7 +2251,8 @@ +@@ -2004,7 +2302,8 @@ _embind_register_class_class_function__deps: [ '$craftInvokerFunction', '$ensureOverloadTable', '$heap32VectorToArray', '$AsciiToString', '$embind__requireFunction', '$throwUnboundTypeError', @@ -454,7 +519,7 @@ _embind_register_class_class_function: (rawClassType, methodName, argCount, -@@ -2031,15 +2279,24 @@ +@@ -2031,15 +2330,24 @@ } var proto = classType.registeredClass.constructor; @@ -480,7 +545,7 @@ } whenDependentTypesAreResolved([], rawArgTypes, (argTypes) => { -@@ -2048,11 +2305,21 @@ +@@ -2048,11 +2356,21 @@ // go into an overload table. var invokerArgsArray = [argTypes[0] /* return value */, null /* no class 'this'*/].concat(argTypes.slice(1) /* actual params */); var func = craftInvokerFunction(humanName, invokerArgsArray, null /* no class 'this'*/, rawInvoker, fn, isAsync); From c068b04cbf9cb4e5778bfd69661d03094fad6f52 Mon Sep 17 00:00:00 2001 From: Marwan Aouida Date: Sun, 7 Jun 2026 20:27:47 +0100 Subject: [PATCH 3/3] full builds: bind the math_Vector-dependent OCCT surface MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Regenerate build-configs/full*.yml via scripts/enumerate-symbols.py now that the bindgen template-discovery change + the bindgen-filters.yaml un-exclusions make the math_Vector-dependent surface bindable. The three configs share one bindings list (only emcc flags differ); each is the verbatim enumerator output. Adds vs the previous full.yml: - walking-line approximators (BRepApprox/GeomInt TheComputeLine{,Bezier}), 2D tangent-constraint solvers (GccAna_*/Geom2dGcc_*/GccEnt), and the ProjLib projection package — previously excluded only because math_VectorBase was unbound; - 6 IMeshData_*Handle the previous (stale) full.yml had missed; the enumerator emits these independently of this change. math_VectorBase is not emitted as a standalone symbol by the enumerator, so it is not listed here; the classes that consume it are. Co-Authored-By: Claude Opus 4.8 (1M context) --- bindgen-filters.yaml | 45 ------------------------- build-configs/full.yml | 50 ++++++++++++++++++++++++++++ build-configs/full_multi.yml | 50 ++++++++++++++++++++++++++++ build-configs/full_multi_browser.yml | 50 ++++++++++++++++++++++++++++ 4 files changed, 150 insertions(+), 45 deletions(-) diff --git a/bindgen-filters.yaml b/bindgen-filters.yaml index f4f30d41..33e15077 100644 --- a/bindgen-filters.yaml +++ b/bindgen-filters.yaml @@ -153,25 +153,6 @@ exclude: # property-of-shape API (`BRepGProp_Vinert`, etc.) does not surface # `Inertia` directly. - BRepGProp_Gauss_Inertia - # OCCT V8 internal `Approx_ComputeLine` template instantiations — the - # Walking-Line surface/surface intersection (`GeomInt`) and B-Rep - # approximation (`BRepApprox`) helpers. Every constructor overload takes - # a `const math_Vector&` parameter, whose underlying type is - # `math_VectorBase` (mangled `15math_VectorBaseIdE`). That base - # is NOT bound: template-typedef discovery is gated on the - # `NCOLLECTION_CONTAINERS` allowlist and the generic-discovery follow-up - # never landed, so `math_VectorBase` is never emitted. As a - # result every JS call shape throws `Cannot construct ... due to unbound - # types` — these classes are unreachable from JS and only surface as dead - # `class_<>` registrations. The public capabilities they back are still - # exposed via higher-level APIs (`GeomInt`/`GeomAPI` surface-surface - # intersection; `BRepApprox`/`BRepBuilderAPI` approximation), so no - # modeling surface is lost. Re-include only if direct TKMath vector - # access (generic template-typedef discovery) ever lands. - - BRepApprox_TheComputeLineOfApprox - - BRepApprox_TheComputeLineBezierOfApprox - - GeomInt_TheComputeLineOfWLApprox - - GeomInt_TheComputeLineBezierOfWLApprox # Misc compilation errors - DsgPrs_RadiusPresentation - Standard_Dump @@ -264,31 +245,6 @@ exclude: - DEVRML_Provider - DE_Provider - DE_Wrapper - - GccAna_Circ2d2TanOn - - GccAna_Circ2d2TanRad - - GccAna_Circ2d3Tan - - GccAna_Circ2dTanCen - - GccAna_Circ2dTanOnRad - - GccAna_Lin2d2Tan - - GccAna_Lin2dTanObl - - GccAna_Lin2dTanPar - - GccAna_Lin2dTanPer - - GccEnt - - Geom2dGcc_Circ2d2TanOn - - Geom2dGcc_Circ2d2TanOnGeo - - Geom2dGcc_Circ2d2TanOnIter - - Geom2dGcc_Circ2d2TanRad - - Geom2dGcc_Circ2d2TanRadGeo - - Geom2dGcc_Circ2d3Tan - - Geom2dGcc_Circ2d3TanIter - - Geom2dGcc_Circ2dTanCen - - Geom2dGcc_Circ2dTanCenGeo - - Geom2dGcc_Circ2dTanOnRad - - Geom2dGcc_Circ2dTanOnRadGeo - - Geom2dGcc_Lin2d2Tan - - Geom2dGcc_Lin2d2TanIter - - Geom2dGcc_Lin2dTanObl - - Geom2dGcc_Lin2dTanOblIter - Geom2dHatch_Elements - GeomInt_TheFunctionOfTheInt2SOfThePrmPrmSvSurfacesOfWLApprox - Graphic3d_Layer @@ -780,7 +736,6 @@ exclude: - HeaderSection - AppDef - GeomPlate - - ProjLib ## Dead format (VRML — superseded by glTF / no consumer) - Vrml diff --git a/build-configs/full.yml b/build-configs/full.yml index 4ccff403..752115e7 100644 --- a/build-configs/full.yml +++ b/build-configs/full.yml @@ -184,6 +184,8 @@ mainBuild: - symbol: BRepApprox_ParLeastSquareOfMyGradientOfTheComputeLineBezierOfApprox - symbol: BRepApprox_ParLeastSquareOfMyGradientbisOfTheComputeLineOfApprox - symbol: BRepApprox_SurfaceTool + - symbol: BRepApprox_TheComputeLineBezierOfApprox + - symbol: BRepApprox_TheComputeLineOfApprox - symbol: BRepApprox_TheImpPrmSvSurfacesOfApprox - symbol: BRepApprox_TheInt2SOfThePrmPrmSvSurfacesOfApprox - symbol: BRepApprox_TheMultiLineOfApprox @@ -1169,13 +1171,23 @@ mainBuild: - symbol: GProp_UndefinedAxis - symbol: GProp_ValueType - symbol: GProp_VelGProps + - symbol: GccAna_Circ2d2TanOn + - symbol: GccAna_Circ2d2TanRad + - symbol: GccAna_Circ2d3Tan - symbol: GccAna_Circ2dBisec + - symbol: GccAna_Circ2dTanCen + - symbol: GccAna_Circ2dTanOnRad - symbol: GccAna_CircLin2dBisec - symbol: GccAna_CircPnt2dBisec + - symbol: GccAna_Lin2d2Tan - symbol: GccAna_Lin2dBisec + - symbol: GccAna_Lin2dTanObl + - symbol: GccAna_Lin2dTanPar + - symbol: GccAna_Lin2dTanPer - symbol: GccAna_LinPnt2dBisec - symbol: GccAna_NoSolution - symbol: GccAna_Pnt2dBisec + - symbol: GccEnt - symbol: GccEnt_BadQualifier - symbol: GccEnt_Position - symbol: GccEnt_QualifiedCirc @@ -1215,6 +1227,17 @@ mainBuild: - symbol: Geom2dEval_SineWaveCurve - symbol: Geom2dEval_TBezierCurve - symbol: Geom2dGcc + - symbol: Geom2dGcc_Circ2d2TanOn + - symbol: Geom2dGcc_Circ2d2TanOnGeo + - symbol: Geom2dGcc_Circ2d2TanOnIter + - symbol: Geom2dGcc_Circ2d2TanRad + - symbol: Geom2dGcc_Circ2d2TanRadGeo + - symbol: Geom2dGcc_Circ2d3Tan + - symbol: Geom2dGcc_Circ2d3TanIter + - symbol: Geom2dGcc_Circ2dTanCen + - symbol: Geom2dGcc_Circ2dTanCenGeo + - symbol: Geom2dGcc_Circ2dTanOnRad + - symbol: Geom2dGcc_Circ2dTanOnRadGeo - symbol: Geom2dGcc_CurveTool - symbol: Geom2dGcc_FunctionTanCirCu - symbol: Geom2dGcc_FunctionTanCuCu @@ -1222,6 +1245,10 @@ mainBuild: - symbol: Geom2dGcc_FunctionTanCuPnt - symbol: Geom2dGcc_FunctionTanObl - symbol: Geom2dGcc_IsParallel + - symbol: Geom2dGcc_Lin2d2Tan + - symbol: Geom2dGcc_Lin2d2TanIter + - symbol: Geom2dGcc_Lin2dTanObl + - symbol: Geom2dGcc_Lin2dTanOblIter - symbol: Geom2dGcc_QCurve - symbol: Geom2dGcc_QualifiedCurve - symbol: Geom2dGcc_Type1 @@ -1446,6 +1473,8 @@ mainBuild: - symbol: GeomInt_ParameterAndOrientation - symbol: GeomInt_ResConstraintOfMyGradientOfTheComputeLineBezierOfWLApprox - symbol: GeomInt_ResConstraintOfMyGradientbisOfTheComputeLineOfWLApprox + - symbol: GeomInt_TheComputeLineBezierOfWLApprox + - symbol: GeomInt_TheComputeLineOfWLApprox - symbol: GeomInt_TheImpPrmSvSurfacesOfWLApprox - symbol: GeomInt_TheInt2SOfThePrmPrmSvSurfacesOfWLApprox - symbol: GeomInt_TheMultiLineOfWLApprox @@ -2180,9 +2209,15 @@ mainBuild: - symbol: IMeshData_DMapOfIFacePtrsMapOfIEdgePtrs - symbol: IMeshData_DMapOfIntegerListOfInteger - symbol: IMeshData_DMapOfShapeInteger + - symbol: IMeshData_ICurveArrayAdaptorHandle + - symbol: IMeshData_ICurveHandle - symbol: IMeshData_IDMapOfIFacePtrsListOfIPCurves - symbol: IMeshData_IDMapOfLink + - symbol: IMeshData_IEdgeHandle + - symbol: IMeshData_IFaceHandle - symbol: IMeshData_IMapOfReal + - symbol: IMeshData_IPCurveHandle + - symbol: IMeshData_IWireHandle - symbol: IMeshData_ListOfIPCurves - symbol: IMeshData_ListOfInteger - symbol: IMeshData_ListOfPnt2d @@ -2703,6 +2738,21 @@ mainBuild: - symbol: Poly_Triangulation - symbol: Poly_TriangulationParameters - symbol: Precision + - symbol: ProjLib + - symbol: ProjLib_CompProjectedCurve + - symbol: ProjLib_ComputeApprox + - symbol: ProjLib_ComputeApproxOnPolarSurface + - symbol: ProjLib_Cone + - symbol: ProjLib_Cylinder + - symbol: ProjLib_Plane + - symbol: ProjLib_PrjFunc + - symbol: ProjLib_PrjResolve + - symbol: ProjLib_ProjectOnPlane + - symbol: ProjLib_ProjectOnSurface + - symbol: ProjLib_ProjectedCurve + - symbol: ProjLib_Projector + - symbol: ProjLib_Sphere + - symbol: ProjLib_Torus - symbol: Quantity_Color - symbol: Quantity_ColorRGBA - symbol: Quantity_NameOfColor diff --git a/build-configs/full_multi.yml b/build-configs/full_multi.yml index 93d6e7a8..0fdbcc2a 100644 --- a/build-configs/full_multi.yml +++ b/build-configs/full_multi.yml @@ -184,6 +184,8 @@ mainBuild: - symbol: BRepApprox_ParLeastSquareOfMyGradientOfTheComputeLineBezierOfApprox - symbol: BRepApprox_ParLeastSquareOfMyGradientbisOfTheComputeLineOfApprox - symbol: BRepApprox_SurfaceTool + - symbol: BRepApprox_TheComputeLineBezierOfApprox + - symbol: BRepApprox_TheComputeLineOfApprox - symbol: BRepApprox_TheImpPrmSvSurfacesOfApprox - symbol: BRepApprox_TheInt2SOfThePrmPrmSvSurfacesOfApprox - symbol: BRepApprox_TheMultiLineOfApprox @@ -1169,13 +1171,23 @@ mainBuild: - symbol: GProp_UndefinedAxis - symbol: GProp_ValueType - symbol: GProp_VelGProps + - symbol: GccAna_Circ2d2TanOn + - symbol: GccAna_Circ2d2TanRad + - symbol: GccAna_Circ2d3Tan - symbol: GccAna_Circ2dBisec + - symbol: GccAna_Circ2dTanCen + - symbol: GccAna_Circ2dTanOnRad - symbol: GccAna_CircLin2dBisec - symbol: GccAna_CircPnt2dBisec + - symbol: GccAna_Lin2d2Tan - symbol: GccAna_Lin2dBisec + - symbol: GccAna_Lin2dTanObl + - symbol: GccAna_Lin2dTanPar + - symbol: GccAna_Lin2dTanPer - symbol: GccAna_LinPnt2dBisec - symbol: GccAna_NoSolution - symbol: GccAna_Pnt2dBisec + - symbol: GccEnt - symbol: GccEnt_BadQualifier - symbol: GccEnt_Position - symbol: GccEnt_QualifiedCirc @@ -1215,6 +1227,17 @@ mainBuild: - symbol: Geom2dEval_SineWaveCurve - symbol: Geom2dEval_TBezierCurve - symbol: Geom2dGcc + - symbol: Geom2dGcc_Circ2d2TanOn + - symbol: Geom2dGcc_Circ2d2TanOnGeo + - symbol: Geom2dGcc_Circ2d2TanOnIter + - symbol: Geom2dGcc_Circ2d2TanRad + - symbol: Geom2dGcc_Circ2d2TanRadGeo + - symbol: Geom2dGcc_Circ2d3Tan + - symbol: Geom2dGcc_Circ2d3TanIter + - symbol: Geom2dGcc_Circ2dTanCen + - symbol: Geom2dGcc_Circ2dTanCenGeo + - symbol: Geom2dGcc_Circ2dTanOnRad + - symbol: Geom2dGcc_Circ2dTanOnRadGeo - symbol: Geom2dGcc_CurveTool - symbol: Geom2dGcc_FunctionTanCirCu - symbol: Geom2dGcc_FunctionTanCuCu @@ -1222,6 +1245,10 @@ mainBuild: - symbol: Geom2dGcc_FunctionTanCuPnt - symbol: Geom2dGcc_FunctionTanObl - symbol: Geom2dGcc_IsParallel + - symbol: Geom2dGcc_Lin2d2Tan + - symbol: Geom2dGcc_Lin2d2TanIter + - symbol: Geom2dGcc_Lin2dTanObl + - symbol: Geom2dGcc_Lin2dTanOblIter - symbol: Geom2dGcc_QCurve - symbol: Geom2dGcc_QualifiedCurve - symbol: Geom2dGcc_Type1 @@ -1446,6 +1473,8 @@ mainBuild: - symbol: GeomInt_ParameterAndOrientation - symbol: GeomInt_ResConstraintOfMyGradientOfTheComputeLineBezierOfWLApprox - symbol: GeomInt_ResConstraintOfMyGradientbisOfTheComputeLineOfWLApprox + - symbol: GeomInt_TheComputeLineBezierOfWLApprox + - symbol: GeomInt_TheComputeLineOfWLApprox - symbol: GeomInt_TheImpPrmSvSurfacesOfWLApprox - symbol: GeomInt_TheInt2SOfThePrmPrmSvSurfacesOfWLApprox - symbol: GeomInt_TheMultiLineOfWLApprox @@ -2180,9 +2209,15 @@ mainBuild: - symbol: IMeshData_DMapOfIFacePtrsMapOfIEdgePtrs - symbol: IMeshData_DMapOfIntegerListOfInteger - symbol: IMeshData_DMapOfShapeInteger + - symbol: IMeshData_ICurveArrayAdaptorHandle + - symbol: IMeshData_ICurveHandle - symbol: IMeshData_IDMapOfIFacePtrsListOfIPCurves - symbol: IMeshData_IDMapOfLink + - symbol: IMeshData_IEdgeHandle + - symbol: IMeshData_IFaceHandle - symbol: IMeshData_IMapOfReal + - symbol: IMeshData_IPCurveHandle + - symbol: IMeshData_IWireHandle - symbol: IMeshData_ListOfIPCurves - symbol: IMeshData_ListOfInteger - symbol: IMeshData_ListOfPnt2d @@ -2703,6 +2738,21 @@ mainBuild: - symbol: Poly_Triangulation - symbol: Poly_TriangulationParameters - symbol: Precision + - symbol: ProjLib + - symbol: ProjLib_CompProjectedCurve + - symbol: ProjLib_ComputeApprox + - symbol: ProjLib_ComputeApproxOnPolarSurface + - symbol: ProjLib_Cone + - symbol: ProjLib_Cylinder + - symbol: ProjLib_Plane + - symbol: ProjLib_PrjFunc + - symbol: ProjLib_PrjResolve + - symbol: ProjLib_ProjectOnPlane + - symbol: ProjLib_ProjectOnSurface + - symbol: ProjLib_ProjectedCurve + - symbol: ProjLib_Projector + - symbol: ProjLib_Sphere + - symbol: ProjLib_Torus - symbol: Quantity_Color - symbol: Quantity_ColorRGBA - symbol: Quantity_NameOfColor diff --git a/build-configs/full_multi_browser.yml b/build-configs/full_multi_browser.yml index 0ed19e29..f37181b4 100644 --- a/build-configs/full_multi_browser.yml +++ b/build-configs/full_multi_browser.yml @@ -214,6 +214,8 @@ mainBuild: - symbol: BRepApprox_ParLeastSquareOfMyGradientOfTheComputeLineBezierOfApprox - symbol: BRepApprox_ParLeastSquareOfMyGradientbisOfTheComputeLineOfApprox - symbol: BRepApprox_SurfaceTool + - symbol: BRepApprox_TheComputeLineBezierOfApprox + - symbol: BRepApprox_TheComputeLineOfApprox - symbol: BRepApprox_TheImpPrmSvSurfacesOfApprox - symbol: BRepApprox_TheInt2SOfThePrmPrmSvSurfacesOfApprox - symbol: BRepApprox_TheMultiLineOfApprox @@ -1199,13 +1201,23 @@ mainBuild: - symbol: GProp_UndefinedAxis - symbol: GProp_ValueType - symbol: GProp_VelGProps + - symbol: GccAna_Circ2d2TanOn + - symbol: GccAna_Circ2d2TanRad + - symbol: GccAna_Circ2d3Tan - symbol: GccAna_Circ2dBisec + - symbol: GccAna_Circ2dTanCen + - symbol: GccAna_Circ2dTanOnRad - symbol: GccAna_CircLin2dBisec - symbol: GccAna_CircPnt2dBisec + - symbol: GccAna_Lin2d2Tan - symbol: GccAna_Lin2dBisec + - symbol: GccAna_Lin2dTanObl + - symbol: GccAna_Lin2dTanPar + - symbol: GccAna_Lin2dTanPer - symbol: GccAna_LinPnt2dBisec - symbol: GccAna_NoSolution - symbol: GccAna_Pnt2dBisec + - symbol: GccEnt - symbol: GccEnt_BadQualifier - symbol: GccEnt_Position - symbol: GccEnt_QualifiedCirc @@ -1245,6 +1257,17 @@ mainBuild: - symbol: Geom2dEval_SineWaveCurve - symbol: Geom2dEval_TBezierCurve - symbol: Geom2dGcc + - symbol: Geom2dGcc_Circ2d2TanOn + - symbol: Geom2dGcc_Circ2d2TanOnGeo + - symbol: Geom2dGcc_Circ2d2TanOnIter + - symbol: Geom2dGcc_Circ2d2TanRad + - symbol: Geom2dGcc_Circ2d2TanRadGeo + - symbol: Geom2dGcc_Circ2d3Tan + - symbol: Geom2dGcc_Circ2d3TanIter + - symbol: Geom2dGcc_Circ2dTanCen + - symbol: Geom2dGcc_Circ2dTanCenGeo + - symbol: Geom2dGcc_Circ2dTanOnRad + - symbol: Geom2dGcc_Circ2dTanOnRadGeo - symbol: Geom2dGcc_CurveTool - symbol: Geom2dGcc_FunctionTanCirCu - symbol: Geom2dGcc_FunctionTanCuCu @@ -1252,6 +1275,10 @@ mainBuild: - symbol: Geom2dGcc_FunctionTanCuPnt - symbol: Geom2dGcc_FunctionTanObl - symbol: Geom2dGcc_IsParallel + - symbol: Geom2dGcc_Lin2d2Tan + - symbol: Geom2dGcc_Lin2d2TanIter + - symbol: Geom2dGcc_Lin2dTanObl + - symbol: Geom2dGcc_Lin2dTanOblIter - symbol: Geom2dGcc_QCurve - symbol: Geom2dGcc_QualifiedCurve - symbol: Geom2dGcc_Type1 @@ -1476,6 +1503,8 @@ mainBuild: - symbol: GeomInt_ParameterAndOrientation - symbol: GeomInt_ResConstraintOfMyGradientOfTheComputeLineBezierOfWLApprox - symbol: GeomInt_ResConstraintOfMyGradientbisOfTheComputeLineOfWLApprox + - symbol: GeomInt_TheComputeLineBezierOfWLApprox + - symbol: GeomInt_TheComputeLineOfWLApprox - symbol: GeomInt_TheImpPrmSvSurfacesOfWLApprox - symbol: GeomInt_TheInt2SOfThePrmPrmSvSurfacesOfWLApprox - symbol: GeomInt_TheMultiLineOfWLApprox @@ -2210,9 +2239,15 @@ mainBuild: - symbol: IMeshData_DMapOfIFacePtrsMapOfIEdgePtrs - symbol: IMeshData_DMapOfIntegerListOfInteger - symbol: IMeshData_DMapOfShapeInteger + - symbol: IMeshData_ICurveArrayAdaptorHandle + - symbol: IMeshData_ICurveHandle - symbol: IMeshData_IDMapOfIFacePtrsListOfIPCurves - symbol: IMeshData_IDMapOfLink + - symbol: IMeshData_IEdgeHandle + - symbol: IMeshData_IFaceHandle - symbol: IMeshData_IMapOfReal + - symbol: IMeshData_IPCurveHandle + - symbol: IMeshData_IWireHandle - symbol: IMeshData_ListOfIPCurves - symbol: IMeshData_ListOfInteger - symbol: IMeshData_ListOfPnt2d @@ -2733,6 +2768,21 @@ mainBuild: - symbol: Poly_Triangulation - symbol: Poly_TriangulationParameters - symbol: Precision + - symbol: ProjLib + - symbol: ProjLib_CompProjectedCurve + - symbol: ProjLib_ComputeApprox + - symbol: ProjLib_ComputeApproxOnPolarSurface + - symbol: ProjLib_Cone + - symbol: ProjLib_Cylinder + - symbol: ProjLib_Plane + - symbol: ProjLib_PrjFunc + - symbol: ProjLib_PrjResolve + - symbol: ProjLib_ProjectOnPlane + - symbol: ProjLib_ProjectOnSurface + - symbol: ProjLib_ProjectedCurve + - symbol: ProjLib_Projector + - symbol: ProjLib_Sphere + - symbol: ProjLib_Torus - symbol: Quantity_Color - symbol: Quantity_ColorRGBA - symbol: Quantity_NameOfColor