@ifc-lite/codegen 1.17.0 → 1.18.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -0
- package/dist/cli.js +4 -0
- package/dist/cli.js.map +1 -1
- package/dist/generator.d.ts +4 -0
- package/dist/generator.d.ts.map +1 -1
- package/dist/generator.js +53 -5
- package/dist/generator.js.map +1 -1
- package/dist/rust-generator.d.ts +2 -4
- package/dist/rust-generator.d.ts.map +1 -1
- package/dist/rust-generator.js +50 -66
- package/dist/rust-generator.js.map +1 -1
- package/dist/rust-schema-queries.d.ts +9 -2
- package/dist/rust-schema-queries.d.ts.map +1 -1
- package/dist/rust-schema-queries.js +56 -3
- package/dist/rust-schema-queries.js.map +1 -1
- package/dist/rust-type-id-generator.d.ts +4 -0
- package/dist/rust-type-id-generator.d.ts.map +1 -0
- package/dist/rust-type-id-generator.js +30 -0
- package/dist/rust-type-id-generator.js.map +1 -0
- package/dist/rust-type-name-parser.js +2 -2
- package/dist/rust-unknown-ifc-type.d.ts +3 -0
- package/dist/rust-unknown-ifc-type.d.ts.map +1 -0
- package/dist/rust-unknown-ifc-type.js +32 -0
- package/dist/rust-unknown-ifc-type.js.map +1 -0
- package/package.json +4 -4
- package/schemas/IFC4X1.exp +12630 -0
- package/schemas/IFC4X2.exp +12885 -0
package/README.md
CHANGED
|
@@ -21,6 +21,20 @@ node dist/cli.js schemas/IFC4X3.exp --output ./generated/ifc4x3
|
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
Pass `--rust` to also emit Rust type tables (consumed by the ifc-lite Rust core).
|
|
24
|
+
Rust output is public by default. Add `--rust-crate-private` when the generated
|
|
25
|
+
registry is an implementation detail of one crate and must use `pub(crate)`
|
|
26
|
+
instead of becoming part of that crate's public API; the flag has no effect
|
|
27
|
+
unless `--rust` is also present.
|
|
28
|
+
Pass `--rust` to also emit Rust type tables (consumed by the ifc-lite Rust core). To generate
|
|
29
|
+
one exact-name universe across supported releases while keeping the first schema authoritative
|
|
30
|
+
for attributes, pass older schemas with `--rust-supplemental-schema`. Rust generation also
|
|
31
|
+
includes class-shaped rows from `@ifc-lite/data`'s IFC4 family catalog, covering accepted IFC4X1
|
|
32
|
+
entities such as `IfcAlignmentCurve` that are absent from the bundled IFC4 ADD2 EXPRESS file:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
node dist/cli.js schemas/IFC4X3.exp --rust \
|
|
36
|
+
--rust-supplemental-schema schemas/IFC4_ADD2_TC1.exp schemas/IFC2X3_TC1.exp
|
|
37
|
+
```
|
|
24
38
|
|
|
25
39
|
Generated files (one per output directory, e.g. `./generated/ifc4`):
|
|
26
40
|
|
package/dist/cli.js
CHANGED
|
@@ -19,6 +19,8 @@ program
|
|
|
19
19
|
.option('-o, --output <dir>', 'Output directory', './generated')
|
|
20
20
|
.option('-r, --rust', 'Generate Rust code', false)
|
|
21
21
|
.option('--rust-dir <dir>', 'Rust output subdirectory (relative to output)', 'rust')
|
|
22
|
+
.option('--rust-crate-private', 'Keep generated Rust types crate-private', false)
|
|
23
|
+
.option('--rust-supplemental-schema <path...>', 'Additional EXPRESS schemas whose entity names extend the Rust IfcType universe')
|
|
22
24
|
.option('--skip-collision-check', 'Skip CRC32 collision check', false)
|
|
23
25
|
.option('-v, --verbose', 'Verbose output', false)
|
|
24
26
|
.action((schemaPath, options) => {
|
|
@@ -38,6 +40,8 @@ program
|
|
|
38
40
|
const genOptions = {
|
|
39
41
|
rust: options.rust,
|
|
40
42
|
rustDir: options.rustDir,
|
|
43
|
+
rustCratePrivate: options.rustCratePrivate,
|
|
44
|
+
rustSupplementalSchemaPaths: options.rustSupplementalSchema,
|
|
41
45
|
skipCollisionCheck: options.skipCollisionCheck,
|
|
42
46
|
};
|
|
43
47
|
generateFromFile(schemaPath, options.output, genOptions);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;+DAE+D;AAE/D;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAyB,MAAM,gBAAgB,CAAC;AAEzE,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,aAAa,CAAC;KACnB,WAAW,CAAC,4DAA4D,CAAC;KACzE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,QAAQ,CAAC,UAAU,EAAE,oCAAoC,CAAC;KAC1D,MAAM,CAAC,oBAAoB,EAAE,kBAAkB,EAAE,aAAa,CAAC;KAC/D,MAAM,CAAC,YAAY,EAAE,oBAAoB,EAAE,KAAK,CAAC;KACjD,MAAM,CAAC,kBAAkB,EAAE,+CAA+C,EAAE,MAAM,CAAC;KACnF,MAAM,CAAC,wBAAwB,EAAE,4BAA4B,EAAE,KAAK,CAAC;KACrE,MAAM,CAAC,eAAe,EAAE,gBAAgB,EAAE,KAAK,CAAC;KAChD,MAAM,CACL,CACE,UAAkB,EAClB,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;+DAE+D;AAE/D;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAyB,MAAM,gBAAgB,CAAC;AAEzE,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,aAAa,CAAC;KACnB,WAAW,CAAC,4DAA4D,CAAC;KACzE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,QAAQ,CAAC,UAAU,EAAE,oCAAoC,CAAC;KAC1D,MAAM,CAAC,oBAAoB,EAAE,kBAAkB,EAAE,aAAa,CAAC;KAC/D,MAAM,CAAC,YAAY,EAAE,oBAAoB,EAAE,KAAK,CAAC;KACjD,MAAM,CAAC,kBAAkB,EAAE,+CAA+C,EAAE,MAAM,CAAC;KACnF,MAAM,CAAC,sBAAsB,EAAE,yCAAyC,EAAE,KAAK,CAAC;KAChF,MAAM,CACL,sCAAsC,EACtC,gFAAgF,CACjF;KACA,MAAM,CAAC,wBAAwB,EAAE,4BAA4B,EAAE,KAAK,CAAC;KACrE,MAAM,CAAC,eAAe,EAAE,gBAAgB,EAAE,KAAK,CAAC;KAChD,MAAM,CACL,CACE,UAAkB,EAClB,OAQC,EACD,EAAE;IACF,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,WAAW,UAAU,EAAE,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,WAAW,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACzC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,uDAAuD;YACvD,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;gBACjD,CAAC,CAAC,OAAO,CAAC,OAAO;gBACjB,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,WAAW,WAAW,EAAE,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEzB,MAAM,UAAU,GAAqB;YACnC,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;YAC1C,2BAA2B,EAAE,OAAO,CAAC,sBAAsB;YAC3D,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;SAC/C,CAAC;QAEF,gBAAgB,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAEzD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,sBAAsB,OAAO,IAAI,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC5E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CACF,CAAC;AAEJ,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
package/dist/generator.d.ts
CHANGED
|
@@ -8,6 +8,10 @@ export interface GeneratorOptions {
|
|
|
8
8
|
rust?: boolean;
|
|
9
9
|
/** Rust output directory (relative to outputDir or absolute) */
|
|
10
10
|
rustDir?: string;
|
|
11
|
+
/** Keep generated Rust types visible only inside their consuming crate. */
|
|
12
|
+
rustCratePrivate?: boolean;
|
|
13
|
+
/** Additional EXPRESS files whose entity names extend the Rust IfcType universe. */
|
|
14
|
+
rustSupplementalSchemaPaths?: string[];
|
|
11
15
|
/** Skip type ID collision check */
|
|
12
16
|
skipCollisionCheck?: boolean;
|
|
13
17
|
}
|
package/dist/generator.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAOnF,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,2BAA2B;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,oFAAoF;IACpF,2BAA2B,CAAC,EAAE,MAAM,EAAE,CAAC;IACvC,mCAAmC;IACnC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,gBAAqB,GAC7B,iBAAiB,CAMnB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,gBAAqB,GAC7B,iBAAiB,CA0OnB;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,gBAAqB,GAC7B,IAAI,CAoBN"}
|
package/dist/generator.js
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* - TypeScript serialization helpers
|
|
11
11
|
* - Rust types and type IDs
|
|
12
12
|
*/
|
|
13
|
+
import { ENTITIES_IFC4, IFC_DATA_TYPES } from '@ifc-lite/data';
|
|
13
14
|
import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'node:fs';
|
|
14
15
|
import { join, isAbsolute } from 'node:path';
|
|
15
16
|
import { parseExpressSchema } from './express-parser.js';
|
|
@@ -18,6 +19,7 @@ import { generateTypeIds } from './type-ids-generator.js';
|
|
|
18
19
|
import { generateSerializers } from './serialization-generator.js';
|
|
19
20
|
import { generateRust } from './rust-generator.js';
|
|
20
21
|
import { findCollisions } from './crc32.js';
|
|
22
|
+
import { entityCatalogSchema } from './rust-schema-queries.js';
|
|
21
23
|
/**
|
|
22
24
|
* Generate all code from an EXPRESS schema file
|
|
23
25
|
*/
|
|
@@ -38,6 +40,16 @@ export function generateFromSchema(schemaContent, outputDir, options = {}) {
|
|
|
38
40
|
schemaContent = schemaContent.replace(/\r\n?/g, '\n');
|
|
39
41
|
console.log('📖 Parsing EXPRESS schema...');
|
|
40
42
|
const schema = parseExpressSchema(schemaContent);
|
|
43
|
+
const rustSupplementalSchemas = options.rust
|
|
44
|
+
? [
|
|
45
|
+
...(options.rustSupplementalSchemaPaths ?? []).map((path) => parseExpressSchema(readFileSync(path, 'utf-8').replace(/\r\n?/g, '\n'))),
|
|
46
|
+
// The IFC4-family catalog widens the CANONICAL exact-name universe
|
|
47
|
+
// (#4203); a crate-private per-schema registry is exactly its own
|
|
48
|
+
// schema and must not be widened, or `attribute_names_for_schema`
|
|
49
|
+
// could answer for a class the declared FILE_SCHEMA never knew.
|
|
50
|
+
...(options.rustCratePrivate ? [] : [entityCatalogSchema('IFC4_FAMILY', ENTITIES_IFC4, IFC_DATA_TYPES)]),
|
|
51
|
+
]
|
|
52
|
+
: [];
|
|
41
53
|
console.log(`✓ Parsed ${schema.name}`);
|
|
42
54
|
console.log(` - ${schema.entities.length} entities`);
|
|
43
55
|
console.log(` - ${schema.types.length} types`);
|
|
@@ -46,8 +58,17 @@ export function generateFromSchema(schemaContent, outputDir, options = {}) {
|
|
|
46
58
|
// Check for CRC32 collisions
|
|
47
59
|
if (!options.skipCollisionCheck) {
|
|
48
60
|
console.log('\n🔍 Checking for CRC32 collisions...');
|
|
49
|
-
const entityNames = schema.entities
|
|
50
|
-
const
|
|
61
|
+
const entityNames = [...schema.entities];
|
|
62
|
+
const knownNames = new Set(entityNames.map((entity) => entity.name.toUpperCase()));
|
|
63
|
+
for (const supplemental of rustSupplementalSchemas) {
|
|
64
|
+
for (const entity of supplemental.entities) {
|
|
65
|
+
if (!knownNames.has(entity.name.toUpperCase())) {
|
|
66
|
+
entityNames.push(entity);
|
|
67
|
+
knownNames.add(entity.name.toUpperCase());
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
const collisions = findCollisions(entityNames.map((entity) => entity.name));
|
|
51
72
|
if (collisions.size > 0) {
|
|
52
73
|
console.warn('⚠️ CRC32 collisions detected:');
|
|
53
74
|
for (const [hash, names] of collisions) {
|
|
@@ -104,7 +125,7 @@ export * from './serializers.js';
|
|
|
104
125
|
// Generate Rust code if requested
|
|
105
126
|
if (options.rust) {
|
|
106
127
|
console.log('\n🦀 Generating Rust code...');
|
|
107
|
-
const rustCode = generateRust(schema);
|
|
128
|
+
const rustCode = generateRust(schema, rustSupplementalSchemas, options.rustCratePrivate);
|
|
108
129
|
// Use absolute path directly, or join relative path with outputDir
|
|
109
130
|
const rustDir = options.rustDir
|
|
110
131
|
? isAbsolute(options.rustDir)
|
|
@@ -117,7 +138,8 @@ export * from './serializers.js';
|
|
|
117
138
|
writeFileSync(`${rustDir}/schema.rs`, rustCode.schema);
|
|
118
139
|
console.log(` ✓ ${rustDir}/schema.rs`);
|
|
119
140
|
// Write mod.rs
|
|
120
|
-
const modContent =
|
|
141
|
+
const modContent = options.rustCratePrivate
|
|
142
|
+
? `// This Source Code Form is subject to the terms of the Mozilla Public
|
|
121
143
|
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
122
144
|
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
123
145
|
|
|
@@ -130,8 +152,34 @@ export * from './serializers.js';
|
|
|
130
152
|
mod type_ids;
|
|
131
153
|
mod schema;
|
|
132
154
|
|
|
155
|
+
// The full generated ID universe is intentionally available to sibling modules.
|
|
156
|
+
#[allow(unused_imports)]
|
|
157
|
+
pub(crate) use type_ids::*;
|
|
158
|
+
pub(crate) use schema::*;
|
|
159
|
+
`
|
|
160
|
+
: `// This Source Code Form is subject to the terms of the Mozilla Public
|
|
161
|
+
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
162
|
+
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
163
|
+
|
|
164
|
+
//! Auto-generated IFC Schema Types
|
|
165
|
+
//!
|
|
166
|
+
//! Generated from EXPRESS schema: ${schema.name}
|
|
167
|
+
//!
|
|
168
|
+
//! DO NOT EDIT - This file is auto-generated by @ifc-lite/codegen
|
|
169
|
+
|
|
170
|
+
mod ifc2x3;
|
|
171
|
+
mod ifc4;
|
|
172
|
+
mod ifc4x1;
|
|
173
|
+
mod ifc4x2;
|
|
174
|
+
mod schema;
|
|
175
|
+
pub(crate) mod schema_registry;
|
|
176
|
+
mod type_ids;
|
|
177
|
+
|
|
133
178
|
pub use type_ids::*;
|
|
134
|
-
pub use schema
|
|
179
|
+
pub use schema::{IfcType, UnknownIfcType, ALL as IFC_TYPES};
|
|
180
|
+
pub use schema_registry::{
|
|
181
|
+
attribute_names_for_schema, entity_info_for_schema, is_subtype_of_for_schema, SchemaEntityInfo,
|
|
182
|
+
};
|
|
135
183
|
`;
|
|
136
184
|
writeFileSync(`${rustDir}/mod.rs`, modContent);
|
|
137
185
|
console.log(` ✓ ${rustDir}/mod.rs`);
|
package/dist/generator.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAsB,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAsB,MAAM,2BAA2B,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,YAAY,EAA0B,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
|
package/dist/rust-generator.d.ts
CHANGED
|
@@ -12,8 +12,6 @@ export interface RustGeneratedCode {
|
|
|
12
12
|
typeIds: string;
|
|
13
13
|
schema: string;
|
|
14
14
|
}
|
|
15
|
-
/**
|
|
16
|
-
|
|
17
|
-
*/
|
|
18
|
-
export declare function generateRust(schema: ExpressSchema): RustGeneratedCode;
|
|
15
|
+
/** Generate all Rust code from the canonical and supplemental EXPRESS schemas. */
|
|
16
|
+
export declare function generateRust(schema: ExpressSchema, supplementalSchemas?: readonly ExpressSchema[], cratePrivate?: boolean): RustGeneratedCode;
|
|
19
17
|
//# sourceMappingURL=rust-generator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rust-generator.d.ts","sourceRoot":"","sources":["../src/rust-generator.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAoB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"rust-generator.d.ts","sourceRoot":"","sources":["../src/rust-generator.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAoB,MAAM,qBAAqB,CAAC;AAQ3E,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,kFAAkF;AAClF,wBAAgB,YAAY,CAC1B,MAAM,EAAE,aAAa,EACrB,mBAAmB,GAAE,SAAS,aAAa,EAAO,EAClD,YAAY,UAAQ,GACnB,iBAAiB,CAMnB"}
|
package/dist/rust-generator.js
CHANGED
|
@@ -3,51 +3,21 @@
|
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
4
|
import { crc32, formatCRC32TableLiteral } from './crc32.js';
|
|
5
5
|
import { getInheritanceChain } from './express-parser.js';
|
|
6
|
-
import { generateSchemaQueries } from './rust-schema-queries.js';
|
|
6
|
+
import { generateSchemaQueries, mergeTypeUniverse } from './rust-schema-queries.js';
|
|
7
7
|
import { generateTypeNameParser } from './rust-type-name-parser.js';
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
*/
|
|
11
|
-
export function generateRust(schema) {
|
|
8
|
+
import { generateUnknownIfcType } from './rust-unknown-ifc-type.js';
|
|
9
|
+
import { generateTypeIdConstants } from './rust-type-id-generator.js';
|
|
10
|
+
/** Generate all Rust code from the canonical and supplemental EXPRESS schemas. */
|
|
11
|
+
export function generateRust(schema, supplementalSchemas = [], cratePrivate = false) {
|
|
12
|
+
const typeUniverse = mergeTypeUniverse(schema, supplementalSchemas);
|
|
12
13
|
return {
|
|
13
|
-
typeIds: generateTypeIdConstants(
|
|
14
|
-
schema: generateIfcTypeEnum(schema),
|
|
14
|
+
typeIds: generateTypeIdConstants(typeUniverse, cratePrivate, categorizeEntities),
|
|
15
|
+
schema: generateIfcTypeEnum(schema, typeUniverse, cratePrivate),
|
|
15
16
|
};
|
|
16
17
|
}
|
|
17
|
-
/**
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
function generateTypeIdConstants(schema) {
|
|
21
|
-
let code = `// This Source Code Form is subject to the terms of the Mozilla Public
|
|
22
|
-
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
23
|
-
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
24
|
-
|
|
25
|
-
//! Auto-generated IFC Type ID Constants
|
|
26
|
-
//!
|
|
27
|
-
//! CRC32 hashes for fast type identification.
|
|
28
|
-
//! Generated from EXPRESS schema: ${schema.name}
|
|
29
|
-
//!
|
|
30
|
-
//! DO NOT EDIT - This file is auto-generated by @ifc-lite/codegen
|
|
31
|
-
|
|
32
|
-
#![allow(dead_code)]
|
|
33
|
-
|
|
34
|
-
`;
|
|
35
|
-
// Group by category for readability
|
|
36
|
-
const categories = categorizeEntities(schema);
|
|
37
|
-
for (const [category, entities] of Object.entries(categories)) {
|
|
38
|
-
code += `// ${category}\n`;
|
|
39
|
-
for (const entity of entities) {
|
|
40
|
-
const id = crc32(entity.name);
|
|
41
|
-
code += `pub const ${entity.name.toUpperCase()}: u32 = ${id};\n`;
|
|
42
|
-
}
|
|
43
|
-
code += '\n';
|
|
44
|
-
}
|
|
45
|
-
return code;
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Generate the main IfcType enum
|
|
49
|
-
*/
|
|
50
|
-
function generateIfcTypeEnum(schema) {
|
|
18
|
+
/** Generate the main IfcType enum. */
|
|
19
|
+
function generateIfcTypeEnum(schema, typeUniverse, cratePrivate) {
|
|
20
|
+
const visibility = cratePrivate ? 'pub(crate)' : 'pub';
|
|
51
21
|
let code = `// This Source Code Form is subject to the terms of the Mozilla Public
|
|
52
22
|
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
53
23
|
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
@@ -58,16 +28,17 @@ function generateIfcTypeEnum(schema) {
|
|
|
58
28
|
//!
|
|
59
29
|
//! DO NOT EDIT - This file is auto-generated by @ifc-lite/codegen
|
|
60
30
|
|
|
61
|
-
use std::fmt;
|
|
31
|
+
${cratePrivate ? '#![allow(dead_code, clippy::enum_variant_names)] // Full EXPRESS names are required; registry consumers currently use only name lookup and attribute slots.\n\n' : ''}use std::fmt;
|
|
62
32
|
|
|
33
|
+
${generateUnknownIfcType(visibility)}
|
|
63
34
|
/// IFC Entity Types
|
|
64
35
|
///
|
|
65
|
-
/// All ${
|
|
66
|
-
#[derive(Debug, Clone,
|
|
67
|
-
|
|
36
|
+
/// All ${typeUniverse.entities.length} entity types from the supported schema universe.
|
|
37
|
+
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
|
|
38
|
+
${visibility} enum IfcType {
|
|
68
39
|
`;
|
|
69
40
|
// Group entities by category
|
|
70
|
-
const categories = categorizeEntities(
|
|
41
|
+
const categories = categorizeEntities(typeUniverse);
|
|
71
42
|
for (const [category, entities] of Object.entries(categories)) {
|
|
72
43
|
code += ` // ${category}\n`;
|
|
73
44
|
for (const entity of entities) {
|
|
@@ -79,22 +50,24 @@ pub enum IfcType {
|
|
|
79
50
|
code += '\n';
|
|
80
51
|
}
|
|
81
52
|
// Add Unknown variant for unrecognized types
|
|
82
|
-
code += ` /// Unknown/unrecognized IFC type
|
|
83
|
-
Unknown(
|
|
53
|
+
code += ` /// Unknown/unrecognized IFC type with its normalized keyword.
|
|
54
|
+
Unknown(UnknownIfcType),
|
|
84
55
|
}
|
|
85
56
|
|
|
86
57
|
impl IfcType {
|
|
87
|
-
${generateTypeNameParser(
|
|
88
|
-
/// Parse from CRC32 type ID
|
|
89
|
-
|
|
58
|
+
${generateTypeNameParser(typeUniverse)}
|
|
59
|
+
/// Parse a known schema type from a CRC32 type ID.
|
|
60
|
+
///
|
|
61
|
+
/// Unknown keywords cannot be reconstructed from a hash.
|
|
62
|
+
pub fn from_id(id: u32) -> Option<Self> {
|
|
90
63
|
match id {
|
|
91
64
|
`;
|
|
92
65
|
// Generate match arms for CRC32 IDs
|
|
93
|
-
for (const entity of
|
|
66
|
+
for (const entity of typeUniverse.entities) {
|
|
94
67
|
const id = crc32(entity.name);
|
|
95
|
-
code += ` ${id} => Self::${entity.name},\n`;
|
|
68
|
+
code += ` ${id} => Some(Self::${entity.name}),\n`;
|
|
96
69
|
}
|
|
97
|
-
code += ` _ =>
|
|
70
|
+
code += ` _ => None,
|
|
98
71
|
}
|
|
99
72
|
}
|
|
100
73
|
|
|
@@ -102,33 +75,44 @@ ${generateTypeNameParser(schema)}
|
|
|
102
75
|
pub fn id(&self) -> u32 {
|
|
103
76
|
match self {
|
|
104
77
|
`;
|
|
105
|
-
for (const entity of
|
|
78
|
+
for (const entity of typeUniverse.entities) {
|
|
106
79
|
const id = crc32(entity.name);
|
|
107
80
|
code += ` Self::${entity.name} => ${id},\n`;
|
|
108
81
|
}
|
|
109
|
-
code += ` Self::Unknown(
|
|
82
|
+
code += ` Self::Unknown(unknown) => unknown.id(),
|
|
110
83
|
}
|
|
111
84
|
}
|
|
112
85
|
|
|
113
86
|
/// Get string representation (uppercase)
|
|
114
|
-
pub fn as_str(&self) -> &
|
|
87
|
+
pub fn as_str(&self) -> &str {
|
|
115
88
|
match self {
|
|
116
89
|
`;
|
|
117
|
-
for (const entity of
|
|
90
|
+
for (const entity of typeUniverse.entities) {
|
|
118
91
|
code += ` Self::${entity.name} => "${entity.name.toUpperCase()}",\n`;
|
|
119
92
|
}
|
|
120
|
-
code += ` Self::Unknown(
|
|
93
|
+
code += ` Self::Unknown(unknown) => unknown.as_str(),
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/// Static schema keyword for a known type, or None for an owned unknown.
|
|
98
|
+
pub fn known_as_str(&self) -> Option<&'static str> {
|
|
99
|
+
match self {
|
|
100
|
+
`;
|
|
101
|
+
for (const entity of typeUniverse.entities) {
|
|
102
|
+
code += ` Self::${entity.name} => Some("${entity.name.toUpperCase()}"),\n`;
|
|
103
|
+
}
|
|
104
|
+
code += ` Self::Unknown(_) => None,
|
|
121
105
|
}
|
|
122
106
|
}
|
|
123
107
|
|
|
124
108
|
/// Get display name (PascalCase)
|
|
125
|
-
pub fn name(&self) -> &
|
|
109
|
+
pub fn name(&self) -> &str {
|
|
126
110
|
match self {
|
|
127
111
|
`;
|
|
128
|
-
for (const entity of
|
|
112
|
+
for (const entity of typeUniverse.entities) {
|
|
129
113
|
code += ` Self::${entity.name} => "${entity.name}",\n`;
|
|
130
114
|
}
|
|
131
|
-
code += ` Self::Unknown(
|
|
115
|
+
code += ` Self::Unknown(unknown) => unknown.as_str(),
|
|
132
116
|
}
|
|
133
117
|
}
|
|
134
118
|
|
|
@@ -136,7 +120,7 @@ ${generateTypeNameParser(schema)}
|
|
|
136
120
|
pub fn parent(&self) -> Option<Self> {
|
|
137
121
|
match self {
|
|
138
122
|
`;
|
|
139
|
-
for (const entity of
|
|
123
|
+
for (const entity of typeUniverse.entities) {
|
|
140
124
|
if (entity.supertype) {
|
|
141
125
|
code += ` Self::${entity.name} => Some(Self::${entity.supertype}),\n`;
|
|
142
126
|
}
|
|
@@ -147,7 +131,7 @@ ${generateTypeNameParser(schema)}
|
|
|
147
131
|
|
|
148
132
|
/// Check if this type is a subtype of another
|
|
149
133
|
pub fn is_subtype_of(&self, parent: Self) -> bool {
|
|
150
|
-
let mut current = Some(
|
|
134
|
+
let mut current = Some(self.clone());
|
|
151
135
|
while let Some(t) = current {
|
|
152
136
|
if t == parent {
|
|
153
137
|
return true;
|
|
@@ -162,7 +146,7 @@ ${generateTypeNameParser(schema)}
|
|
|
162
146
|
pub fn is_abstract(&self) -> bool {
|
|
163
147
|
match self {
|
|
164
148
|
`;
|
|
165
|
-
const abstractTypes =
|
|
149
|
+
const abstractTypes = typeUniverse.entities.filter((e) => e.isAbstract);
|
|
166
150
|
for (const entity of abstractTypes) {
|
|
167
151
|
code += ` Self::${entity.name} => true,\n`;
|
|
168
152
|
}
|
|
@@ -170,7 +154,7 @@ ${generateTypeNameParser(schema)}
|
|
|
170
154
|
}
|
|
171
155
|
}
|
|
172
156
|
|
|
173
|
-
${generateSchemaQueries(schema)}impl fmt::Display for IfcType {
|
|
157
|
+
${generateSchemaQueries(schema, typeUniverse.entities, visibility)}impl fmt::Display for IfcType {
|
|
174
158
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
|
175
159
|
write!(f, "{}", self.name())
|
|
176
160
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rust-generator.js","sourceRoot":"","sources":["../src/rust-generator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rust-generator.js","sourceRoot":"","sources":["../src/rust-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,14 @@
|
|
|
5
5
|
* Split from rust-generator.ts so the enum emission and the metadata that
|
|
6
6
|
* answers questions ABOUT the enum stay separable.
|
|
7
7
|
*/
|
|
8
|
-
import type {
|
|
8
|
+
import type { IfcEntityInfo } from '@ifc-lite/data';
|
|
9
|
+
import type { EntityDefinition, ExpressSchema } from './express-parser.js';
|
|
10
|
+
/** Adapt class-shaped IFC catalog rows into a name-only EXPRESS supplement. */
|
|
11
|
+
export declare function entityCatalogSchema(name: string, catalog: readonly IfcEntityInfo[], excludedTypes: readonly {
|
|
12
|
+
readonly name: string;
|
|
13
|
+
}[]): ExpressSchema;
|
|
14
|
+
/** Merge exact names while preserving canonical positional metadata. */
|
|
15
|
+
export declare function mergeTypeUniverse(canonical: ExpressSchema, supplemental: readonly ExpressSchema[]): ExpressSchema;
|
|
9
16
|
/** Emitted inside `impl IfcType { … }`, closing the impl block. */
|
|
10
|
-
export declare function generateSchemaQueries(schema: ExpressSchema): string;
|
|
17
|
+
export declare function generateSchemaQueries(schema: ExpressSchema, typeUniverse?: readonly EntityDefinition[], visibility?: string): string;
|
|
11
18
|
//# sourceMappingURL=rust-schema-queries.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rust-schema-queries.d.ts","sourceRoot":"","sources":["../src/rust-schema-queries.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"rust-schema-queries.d.ts","sourceRoot":"","sources":["../src/rust-schema-queries.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAG3E,+EAA+E;AAC/E,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,SAAS,aAAa,EAAE,EACjC,aAAa,EAAE,SAAS;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,GAClD,aAAa,CAef;AAED,wEAAwE;AACxE,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,aAAa,EACxB,YAAY,EAAE,SAAS,aAAa,EAAE,GACrC,aAAa,CAgBf;AAED,mEAAmE;AACnE,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,aAAa,EACrB,YAAY,GAAE,SAAS,gBAAgB,EAAoB,EAC3D,UAAU,SAAQ,GACjB,MAAM,CAiER"}
|
|
@@ -2,8 +2,41 @@
|
|
|
2
2
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
4
|
import { getAllAttributes } from './express-parser.js';
|
|
5
|
+
/** Adapt class-shaped IFC catalog rows into a name-only EXPRESS supplement. */
|
|
6
|
+
export function entityCatalogSchema(name, catalog, excludedTypes) {
|
|
7
|
+
const excludedNames = new Set(excludedTypes.map((type) => type.name.toUpperCase()));
|
|
8
|
+
const entities = catalog
|
|
9
|
+
.filter((entity) => !excludedNames.has(entity.name.toUpperCase()) &&
|
|
10
|
+
(entity.parent !== undefined || entity.abstract || entity.attributes.length > 0))
|
|
11
|
+
.map((entity) => ({
|
|
12
|
+
name: entity.name,
|
|
13
|
+
isAbstract: entity.abstract,
|
|
14
|
+
supertype: entity.parent,
|
|
15
|
+
attributes: [],
|
|
16
|
+
}));
|
|
17
|
+
return { name, entities, types: [], enums: [], selects: [] };
|
|
18
|
+
}
|
|
19
|
+
/** Merge exact names while preserving canonical positional metadata. */
|
|
20
|
+
export function mergeTypeUniverse(canonical, supplemental) {
|
|
21
|
+
const entities = [...canonical.entities];
|
|
22
|
+
const names = new Set(entities.map((entity) => entity.name.toUpperCase()));
|
|
23
|
+
for (const schema of supplemental) {
|
|
24
|
+
for (const entity of schema.entities) {
|
|
25
|
+
if (!names.has(entity.name.toUpperCase())) {
|
|
26
|
+
entities.push(entity);
|
|
27
|
+
names.add(entity.name.toUpperCase());
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return {
|
|
32
|
+
...canonical,
|
|
33
|
+
name: [canonical, ...supplemental].map((item) => item.name).join(' + '),
|
|
34
|
+
entities,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
5
37
|
/** Emitted inside `impl IfcType { … }`, closing the impl block. */
|
|
6
|
-
export function generateSchemaQueries(schema) {
|
|
38
|
+
export function generateSchemaQueries(schema, typeUniverse = schema.entities, visibility = 'pub') {
|
|
39
|
+
const canonicalNames = new Set(schema.entities.map((entity) => entity.name));
|
|
7
40
|
return ` /// This entity's attributes, in STEP declaration order.
|
|
8
41
|
///
|
|
9
42
|
/// Supertype attributes come FIRST, which is what makes the position here
|
|
@@ -17,7 +50,9 @@ export function generateSchemaQueries(schema) {
|
|
|
17
50
|
/// as authoritative for it.
|
|
18
51
|
pub fn attribute_names(&self) -> &'static [&'static str] {
|
|
19
52
|
match self {
|
|
20
|
-
${
|
|
53
|
+
${typeUniverse.map((e) => canonicalNames.has(e.name)
|
|
54
|
+
? ` Self::${e.name} => &[${getAllAttributes(e, schema).map((a) => `"${a.name}"`).join(', ')}],`
|
|
55
|
+
: ` Self::${e.name} => &[],`).join('\n')}
|
|
21
56
|
Self::Unknown(_) => &[],
|
|
22
57
|
}
|
|
23
58
|
}
|
|
@@ -29,6 +64,24 @@ ${schema.entities.map((e) => ` Self::${e.name} => &[${getAllAttribute
|
|
|
29
64
|
pub fn attribute_index(&self, name: &str) -> Option<usize> {
|
|
30
65
|
self.attribute_names().iter().position(|n| *n == name)
|
|
31
66
|
}
|
|
67
|
+
|
|
68
|
+
/// Whether ${schema.name} itself declares this class.
|
|
69
|
+
///
|
|
70
|
+
/// The enum is one exact-name universe across every supported release;
|
|
71
|
+
/// a variant that only a supplemental (older) schema declares keeps its
|
|
72
|
+
/// name but carries no positional metadata here (its
|
|
73
|
+
/// \`attribute_names()\` is empty). A per-schema registry that must fail
|
|
74
|
+
/// closed for a class the declared FILE_SCHEMA does not know consults
|
|
75
|
+
/// this rather than the emptiness of the attribute list, which a genuine
|
|
76
|
+
/// zero-attribute class shares (#4203).
|
|
77
|
+
pub fn declared_by_canonical_schema(&self) -> bool {
|
|
78
|
+
${typeUniverse.some((e) => !canonicalNames.has(e.name))
|
|
79
|
+
? `!matches!(
|
|
80
|
+
self,
|
|
81
|
+
${typeUniverse.filter((e) => !canonicalNames.has(e.name)).map((e) => `Self::${e.name}`).join(' | ')} | Self::Unknown(_)
|
|
82
|
+
)`
|
|
83
|
+
: '!matches!(self, Self::Unknown(_))'}
|
|
84
|
+
}
|
|
32
85
|
}
|
|
33
86
|
|
|
34
87
|
/// Every entity type this schema defines, in declaration order.
|
|
@@ -43,7 +96,7 @@ ${schema.entities.map((e) => ` Self::${e.name} => &[${getAllAttribute
|
|
|
43
96
|
/// WHOLE schema — mapping every class to some other vocabulary, auditing
|
|
44
97
|
/// which ones it covers, generating a table — otherwise has to re-parse
|
|
45
98
|
/// the EXPRESS file or scrape this one.
|
|
46
|
-
|
|
99
|
+
${visibility} static ALL: &[IfcType] = &[
|
|
47
100
|
${schema.entities.map((e) => ` IfcType::${e.name},`).join('\n')}\n];
|
|
48
101
|
|
|
49
102
|
`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rust-schema-queries.js","sourceRoot":"","sources":["../src/rust-schema-queries.ts"],"names":[],"mappings":"AAAA;;+DAE+D;
|
|
1
|
+
{"version":3,"file":"rust-schema-queries.js","sourceRoot":"","sources":["../src/rust-schema-queries.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { EntityDefinition, ExpressSchema } from './express-parser.js';
|
|
2
|
+
/** Render the generated CRC32 constants without coupling this to enum emission. */
|
|
3
|
+
export declare function generateTypeIdConstants(schema: ExpressSchema, cratePrivate: boolean, categorize: (schema: ExpressSchema) => Record<string, EntityDefinition[]>): string;
|
|
4
|
+
//# sourceMappingURL=rust-type-id-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rust-type-id-generator.d.ts","sourceRoot":"","sources":["../src/rust-type-id-generator.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAE3E,mFAAmF;AACnF,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,aAAa,EACrB,YAAY,EAAE,OAAO,EACrB,UAAU,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,MAAM,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,GACxE,MAAM,CAyBR"}
|