@phoenix-wing/kt-codegen 0.4.1 → 0.4.2

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.
Files changed (52) hide show
  1. package/README.md +24 -3
  2. package/dist/KtCodegenRenderer.d.ts +1 -1
  3. package/dist/KtCodegenRenderer.d.ts.map +1 -1
  4. package/dist/KtCodegenRenderer.js +3 -1293
  5. package/dist/KtCodegenRenderer.js.map +1 -1
  6. package/dist/api/compatibility.d.ts +21 -0
  7. package/dist/api/compatibility.d.ts.map +1 -0
  8. package/dist/api/compatibility.js +43 -0
  9. package/dist/api/compatibility.js.map +1 -0
  10. package/dist/api/index.d.ts +1 -0
  11. package/dist/api/index.d.ts.map +1 -1
  12. package/dist/api/index.js +1 -0
  13. package/dist/api/index.js.map +1 -1
  14. package/dist/renderer/caa-command-families.d.ts +4 -0
  15. package/dist/renderer/caa-command-families.d.ts.map +1 -0
  16. package/dist/renderer/caa-command-families.js +336 -0
  17. package/dist/renderer/caa-command-families.js.map +1 -0
  18. package/dist/renderer/caa-dialog-family.d.ts +5 -0
  19. package/dist/renderer/caa-dialog-family.d.ts.map +1 -0
  20. package/dist/renderer/caa-dialog-family.js +323 -0
  21. package/dist/renderer/caa-dialog-family.js.map +1 -0
  22. package/dist/renderer/caa-feature-families.d.ts +4 -0
  23. package/dist/renderer/caa-feature-families.d.ts.map +1 -0
  24. package/dist/renderer/caa-feature-families.js +250 -0
  25. package/dist/renderer/caa-feature-families.js.map +1 -0
  26. package/dist/renderer/caa-renderer.d.ts +6 -0
  27. package/dist/renderer/caa-renderer.d.ts.map +1 -0
  28. package/dist/renderer/caa-renderer.js +25 -0
  29. package/dist/renderer/caa-renderer.js.map +1 -0
  30. package/dist/renderer/cpp-parameter-family.d.ts +7 -0
  31. package/dist/renderer/cpp-parameter-family.d.ts.map +1 -0
  32. package/dist/renderer/cpp-parameter-family.js +77 -0
  33. package/dist/renderer/cpp-parameter-family.js.map +1 -0
  34. package/dist/renderer/dialog-support.d.ts +6 -0
  35. package/dist/renderer/dialog-support.d.ts.map +1 -0
  36. package/dist/renderer/dialog-support.js +16 -0
  37. package/dist/renderer/dialog-support.js.map +1 -0
  38. package/dist/renderer/family-registry.d.ts +28 -0
  39. package/dist/renderer/family-registry.d.ts.map +1 -0
  40. package/dist/renderer/family-registry.js +55 -0
  41. package/dist/renderer/family-registry.js.map +1 -0
  42. package/dist/renderer/legacy-compatibility.d.ts +16 -0
  43. package/dist/renderer/legacy-compatibility.d.ts.map +1 -0
  44. package/dist/renderer/legacy-compatibility.js +77 -0
  45. package/dist/renderer/legacy-compatibility.js.map +1 -0
  46. package/dist/renderer/qt-dialog-family.d.ts +7 -0
  47. package/dist/renderer/qt-dialog-family.d.ts.map +1 -0
  48. package/dist/renderer/qt-dialog-family.js +231 -0
  49. package/dist/renderer/qt-dialog-family.js.map +1 -0
  50. package/package.json +4 -2
  51. package/tests/fixtures/contracts/apply-projection-v1.json +82 -0
  52. package/tests/fixtures/contracts/codegen-host-contract-v1.json +280 -0
@@ -0,0 +1,323 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ import { ktCodegenDialogParamName, ktCodegenLegacyDialogListIndex, } from "./dialog-support.js";
3
+ import { ktCodegenRenderLegacyEnd, ktCodegenRenderLegacyStart, } from "./legacy-compatibility.js";
4
+ export const KT_CODEGEN_CAA_DIALOG_BLOCKS = [
5
+ "DIALOG NOTIFY",
6
+ "UPDATE DIALOG",
7
+ "UPDATE INFORS",
8
+ ];
9
+ /** 判断旧 CAA Dialog 通知和双向更新块是否保留当前 Item。 */
10
+ function ktCodegenIsCaaDialogItem(item, nameSuffix) {
11
+ return item.nameSuffix === nameSuffix && item.id >= 1;
12
+ }
13
+ /** 按旧 CAA Dialog Agent 规则生成各控件的 AcceptOnNotify。 */
14
+ function ktCodegenRenderCaaDialogNotifyLines(region, items, isCaaVector) {
15
+ const prefix = region.start.linePrefix;
16
+ const lines = ktCodegenRenderLegacyStart(region);
17
+ for (const item of items) {
18
+ lines.push("");
19
+ const dialogPointer = item.isParamDlg ? "dialogMore->" : "";
20
+ const paramName = item.paramString.replaceAll("_", "");
21
+ const notes = `${prefix}// ${item.id}, ${item.paramString}`;
22
+ if (item.componentCount <= 0) {
23
+ lines.push(`${notes}, NO ACTION, ${item.component}, ${item.componentCount}`);
24
+ continue;
25
+ }
26
+ if (item.component === "Spinner") {
27
+ lines.push(notes);
28
+ const component = `${dialogPointer}_Spinner${paramName}`;
29
+ const suffixes = isCaaVector(item) ? ["X", "Y", "Z"] : [""];
30
+ for (const suffix of suffixes) {
31
+ const control = `${component}${suffix}`;
32
+ lines.push(`${prefix}ipDialogAgent->AcceptOnNotify(${control}, ${control}->GetSpinnerModifyNotification());`);
33
+ }
34
+ continue;
35
+ }
36
+ if (item.component.startsWith("CheckButton")) {
37
+ lines.push(notes);
38
+ const component = `${dialogPointer}_CheckButton${paramName}`;
39
+ if (item.componentCount === 1) {
40
+ lines.push(`${prefix}ipDialogAgent->AcceptOnNotify(${component}, ${component}->GetChkBModifyNotification());`);
41
+ }
42
+ else {
43
+ for (let index = 0; index < item.componentCount; index += 1) {
44
+ const control = `${component}${index}`;
45
+ lines.push(`${prefix}ipDialogAgent->AcceptOnNotify(${control}, ${control}->GetChkBModifyNotification());`);
46
+ }
47
+ }
48
+ continue;
49
+ }
50
+ if (item.component.startsWith("RadioButton")) {
51
+ lines.push(notes);
52
+ const component = `${dialogPointer}_RadioButton${paramName}`;
53
+ // 旧代码会把共享 ComponentCount 由1改为2;这里只使用局部值保持输出。
54
+ const count = item.componentCount === 1 ? 2 : item.componentCount;
55
+ for (let index = 0; index < count; index += 1) {
56
+ const control = `${component}${index}`;
57
+ lines.push(`${prefix}ipDialogAgent->AcceptOnNotify(${control}, ${control}->GetRadBModifyNotification());`);
58
+ }
59
+ continue;
60
+ }
61
+ if (item.component.startsWith("Combo")) {
62
+ lines.push(notes);
63
+ const component = `${dialogPointer}_Combo${paramName}`;
64
+ lines.push(`${prefix}ipDialogAgent->AcceptOnNotify(${component}, ${component}->GetComboModifyNotification());`);
65
+ continue;
66
+ }
67
+ if (item.component === "Editor") {
68
+ lines.push(notes);
69
+ const component = `${dialogPointer}_Editor${paramName}`;
70
+ if (item.componentCount === 1) {
71
+ lines.push(`${prefix}ipDialogAgent->AcceptOnNotify(${component}, ${component}->GetEditModifyNotification());`);
72
+ }
73
+ else {
74
+ for (let index = 0; index < item.componentCount; index += 1) {
75
+ const control = `${component}${index}`;
76
+ lines.push(`${prefix}ipDialogAgent->AcceptOnNotify(${control}, ${control}->GetEditModifyNotification());`);
77
+ }
78
+ }
79
+ continue;
80
+ }
81
+ lines.push(`${notes}, NOT SUPPORT, ${item.component}, ${item.componentCount}`);
82
+ }
83
+ return [...lines, ...ktCodegenRenderLegacyEnd(region)];
84
+ }
85
+ /** 按旧 `CreateCAAUpdateDialog` 规则把共享参数写入 CAA 控件。 */
86
+ function ktCodegenRenderCaaUpdateDialogLines(context, region, items, isCaaVector) {
87
+ const prefix = region.start.linePrefix;
88
+ const lines = ktCodegenRenderLegacyStart(region);
89
+ for (const item of items) {
90
+ lines.push("");
91
+ const dialogPointer = item.isParamDlg ? "dialogMore->" : "";
92
+ const param = `parameter->${item.paramString}`;
93
+ const name = ktCodegenDialogParamName(item);
94
+ const notes = `// ${item.id},${item.paramString},${item.notes}`;
95
+ if (item.componentCount <= 0) {
96
+ lines.push(`${prefix}${notes},NO ACTION,${item.component},${item.componentCount}`);
97
+ continue;
98
+ }
99
+ if (item.component === "Spinner") {
100
+ lines.push(`${prefix}${notes}`);
101
+ const component = `${dialogPointer}_Spinner${name}`;
102
+ if (isCaaVector(item)) {
103
+ const unitFactor = item.unit === "mm" ? " * 0.001" : "";
104
+ lines.push(`${prefix}${component}X->SetValue(${param}.GetX()${unitFactor}, 0);`, `${prefix}${component}Y->SetValue(${param}.GetY()${unitFactor}, 0);`, `${prefix}${component}Z->SetValue(${param}.GetZ()${unitFactor}, 0);`);
105
+ }
106
+ else if (item.componentCount === 1) {
107
+ lines.push(`${prefix}${component}->SetValue(${param}, 0);`);
108
+ }
109
+ else {
110
+ const indexSub = ktCodegenLegacyDialogListIndex(item.dataType, true);
111
+ if (indexSub === null) {
112
+ // 旧 VB 故意把错误文本写入候选源码,且不附加 `_prefix`。
113
+ lines.push("data type is wrong!");
114
+ }
115
+ else {
116
+ const unitFactor = item.unit === "mm" ? " * 0.001" : "";
117
+ for (let index = 0; index < item.componentCount; index += 1) {
118
+ lines.push(`${prefix}${component}${index}->SetValue(${param}[${index + indexSub}]${unitFactor}, 0);`);
119
+ }
120
+ }
121
+ }
122
+ continue;
123
+ }
124
+ if (item.component.startsWith("CheckButton")) {
125
+ lines.push(`${prefix}${notes}`);
126
+ const component = `${dialogPointer}_CheckButton${name}`;
127
+ if (item.componentCount === 1) {
128
+ lines.push(`${prefix}${component}->SetState(${param} ? CATDlgCheck : CATDlgUncheck, 0);`);
129
+ }
130
+ else {
131
+ for (let index = 0; index < item.componentCount; index += 1) {
132
+ lines.push(`${prefix}${component}${index}->SetState( (${param} & (1<<${index}))? CATDlgCheck:CATDlgUncheck, 0);`);
133
+ }
134
+ }
135
+ continue;
136
+ }
137
+ if (item.component.startsWith("RadioButton")) {
138
+ const component = `${dialogPointer}_RadioButton${name}`;
139
+ // 旧方法会将共享 count=1 改成2;局部修正可保持输出且不污染 Analyze。
140
+ const count = item.componentCount === 1 ? 2 : item.componentCount;
141
+ const lastIndex = count - 1;
142
+ // 原方法在 Radio 分支重复追加了同一条参数注释。
143
+ lines.push(`${prefix}${notes}`, `${prefix}${notes}`);
144
+ lines.push(`${prefix}if (${param} > ${lastIndex} || ${param} < 0) // BR`, `${prefix} ${param} = (${item.dataType})0;`);
145
+ for (let index = 0; index < count; index += 1) {
146
+ lines.push(`${prefix}${component}${index}->SetState((${param} == ${index}) ? CATDlgCheck : CATDlgUncheck, 0);`);
147
+ }
148
+ continue;
149
+ }
150
+ if (item.component.startsWith("Combo")) {
151
+ const component = `${dialogPointer}_Combo${name}`;
152
+ if (item.dataType === "int") {
153
+ lines.push(`${prefix}${component}->SetSelect( ${param}, 0);`);
154
+ }
155
+ else if (item.dataType === "double" || item.dataType === "CATUnicodeString") {
156
+ lines.push(`${prefix}${component}->SetField( ${param});`);
157
+ }
158
+ else {
159
+ lines.push(`${prefix}${component},NO ACTION,Data Type Error, ${item.dataType}`);
160
+ }
161
+ continue;
162
+ }
163
+ if (item.component === "SelectorList") {
164
+ lines.push(`${prefix}${notes}`);
165
+ let withNoSelection = false;
166
+ if (item.paramString === "OriginSpec") {
167
+ withNoSelection = true;
168
+ lines.push(`${prefix}NoSelectionMsg=${context.param.nameSpace}::GetCoordString(parameter->OriginCoord);`);
169
+ }
170
+ else if (item.paramString === "XDirectionSpec") {
171
+ withNoSelection = true;
172
+ lines.push(`${prefix}NoSelectionMsg=${context.param.nameSpace}::GetCoordString(parameter->XDirectionCoord,parameter->XDirectionSign);`);
173
+ }
174
+ else if (item.paramString === "YDirectionSpec") {
175
+ withNoSelection = true;
176
+ lines.push(`${prefix}NoSelectionMsg=${context.param.nameSpace}::GetCoordString(parameter->YDirectionCoord,parameter->YDirectionSign);`);
177
+ }
178
+ else if (item.paramString === "AxisSpec") {
179
+ withNoSelection = true;
180
+ lines.push(`${prefix}NoSelectionMsg="Default(Absolute)";`);
181
+ }
182
+ const component = `${dialogPointer}_SelectorList${name}`;
183
+ lines.push(`${prefix}KT_AUTO_FIELD_SET_LINE(${component}, ${param}${withNoSelection ? ", &NoSelectionMsg" : ""});`);
184
+ continue;
185
+ }
186
+ if (item.component === "Editor") {
187
+ const component = `${dialogPointer}_Editor${name}`;
188
+ const functionName = item.dataType === "double" || item.dataType === "int" ? "SetValue" : "SetText";
189
+ if (item.componentCount === 1) {
190
+ lines.push(`${prefix}${component}->${functionName}(${param}, 0);`);
191
+ }
192
+ else {
193
+ for (let index = 0; index < item.componentCount; index += 1) {
194
+ lines.push(`${prefix}${component}${index}->${functionName}(${param}[${index + 1}], 0);`);
195
+ }
196
+ }
197
+ continue;
198
+ }
199
+ const supportNote = item.component.length === 0 || item.component === "PushButton"
200
+ ? ""
201
+ : " (Not Support)";
202
+ lines.push(`${prefix}${notes},NO ACTION,${item.component}${supportNote},${item.componentCount}`);
203
+ }
204
+ return [...lines, ...ktCodegenRenderLegacyEnd(region)];
205
+ }
206
+ /** 按旧 `CreateCAAUpdateInfors` 规则把 CAA 控件值写回共享参数。 */
207
+ function ktCodegenRenderCaaUpdateInforsLines(region, items, isCaaVector) {
208
+ const prefix = region.start.linePrefix;
209
+ const lines = ktCodegenRenderLegacyStart(region);
210
+ for (const item of items) {
211
+ lines.push("");
212
+ const dialogPointer = item.isParamDlg ? "dialogMore->" : "";
213
+ const param = `parameter->${item.paramString}`;
214
+ const name = ktCodegenDialogParamName(item);
215
+ let notes = `// ${item.id},${item.paramString},${item.notes}`;
216
+ const generated = [];
217
+ const convertToInt = item.tcKind === "tk_integer" && item.dataType.toLowerCase() !== "int";
218
+ if (item.componentCount <= 0) {
219
+ notes += `,NO ACTION, ${item.component},${item.componentCount}`;
220
+ }
221
+ else if (item.component === "Spinner") {
222
+ const component = `${dialogPointer}_Spinner${name}`;
223
+ if (isCaaVector(item)) {
224
+ const unitFactor = item.unit === "mm" ? " * 1000.0" : "";
225
+ generated.push(`${prefix}${param}.SetX(${component}X->GetValue()${unitFactor});`, `${prefix}${param}.SetY(${component}Y->GetValue()${unitFactor});`, `${prefix}${param}.SetZ(${component}Z->GetValue()${unitFactor});`);
226
+ }
227
+ else if (item.componentCount === 1) {
228
+ const value = `${component}->GetValue()`;
229
+ generated.push(`${prefix}${param} = ${item.dataType === "int" ? `Kt::round(${value})` : value};`);
230
+ }
231
+ else {
232
+ const indexSub = ktCodegenLegacyDialogListIndex(item.dataType, true);
233
+ if (indexSub === null) {
234
+ notes += "data type is wrong";
235
+ }
236
+ else {
237
+ for (let index = 0; index < item.componentCount; index += 1) {
238
+ const value = `${component}${index}->GetValue()`;
239
+ const rounded = item.dataType === "int" ? `Kt::round(${value})` : value;
240
+ generated.push(`${prefix}${param}[${index + indexSub}] = ${rounded};${item.dataType === "int" ? "//round" : ""}`);
241
+ }
242
+ }
243
+ }
244
+ }
245
+ else if (item.component.startsWith("CheckButton")) {
246
+ const component = `${dialogPointer}_CheckButton${name}`;
247
+ if (item.componentCount === 1) {
248
+ const value = `${component}->GetState() == CATDlgCheck ? TRUE : FALSE`;
249
+ generated.push(`${prefix}${param} = ${item.dataType === "int" ? value : `(${item.dataType})(int)(${value})`};`);
250
+ }
251
+ else {
252
+ generated.push(`${prefix}${param}=0;`);
253
+ for (let index = 0; index < item.componentCount; index += 1) {
254
+ const linePrefix = index === 0 ? " " : prefix;
255
+ generated.push(`${linePrefix}if (${component}${index}->GetState() == CATDlgCheck)${param} = ${param} | (1<<${index});`);
256
+ }
257
+ }
258
+ }
259
+ else if (item.component.startsWith("RadioButton")) {
260
+ const component = `${dialogPointer}_RadioButton${name}`;
261
+ const count = item.componentCount === 1 ? 2 : item.componentCount;
262
+ generated.push(`${prefix}${param} = (${item.dataType})0;`);
263
+ for (let index = 1; index < count; index += 1) {
264
+ generated.push(`${prefix}if (${component}${index}->GetState() == CATDlgCheck) // BR`, `${prefix} ${param} = ${convertToInt ? `(${item.dataType})` : ""}${index};`);
265
+ }
266
+ }
267
+ else if (item.component.startsWith("Combo")) {
268
+ const component = `${dialogPointer}_Combo${name}`;
269
+ if (item.dataType === "int") {
270
+ generated.push(`${prefix}${param} = ${component}->GetSelect();`);
271
+ }
272
+ else if (item.dataType === "double") {
273
+ generated.push(`${prefix}${param} = ${component}->GetField();`);
274
+ }
275
+ else if (item.dataType === "CATUnicodeString") {
276
+ generated.push(`${prefix}${component}->GetField(${param});`);
277
+ }
278
+ else {
279
+ notes += `,NO ACTION,Data Type Error,${item.dataType}`;
280
+ }
281
+ }
282
+ else if (item.component === "Editor") {
283
+ const component = `${dialogPointer}_Editor${name}`;
284
+ const functionName = item.dataType === "double" ? "GetValue" : "GetText";
285
+ if (item.componentCount === 1) {
286
+ generated.push(`${prefix}${param} = ${component}->${functionName}();`);
287
+ }
288
+ else {
289
+ for (let index = 0; index < item.componentCount; index += 1) {
290
+ generated.push(`${prefix}${param}[${index + 1}] = ${component}${index}->${functionName}();`);
291
+ }
292
+ }
293
+ }
294
+ else {
295
+ const supportNote = item.component.length === 0 ||
296
+ item.component === "PushButton" ||
297
+ item.component === "SelectorList" ||
298
+ item.component === "MultiList"
299
+ ? ""
300
+ : " (Not Support)";
301
+ notes += `,NO ACTION,${item.component}${supportNote},${item.componentCount}`;
302
+ }
303
+ lines.push(`${prefix}${notes}`, ...generated);
304
+ }
305
+ return [...lines, ...ktCodegenRenderLegacyEnd(region)];
306
+ }
307
+ const caaDialogFamily = {
308
+ id: "caa.dialog",
309
+ blockKeys: KT_CODEGEN_CAA_DIALOG_BLOCKS,
310
+ renderRegion(context, region, algorithms) {
311
+ const items = context.param.items.filter((item) => ktCodegenIsCaaDialogItem(item, region.nameSuffix));
312
+ const lines = region.blockKey === "DIALOG NOTIFY"
313
+ ? ktCodegenRenderCaaDialogNotifyLines(region, items, algorithms.isCaaVector)
314
+ : region.blockKey === "UPDATE DIALOG"
315
+ ? ktCodegenRenderCaaUpdateDialogLines(context, region, items, algorithms.isCaaVector)
316
+ : ktCodegenRenderCaaUpdateInforsLines(region, items, algorithms.isCaaVector);
317
+ return { items, lines };
318
+ },
319
+ };
320
+ export const KT_CODEGEN_CAA_DIALOG_FAMILIES = [
321
+ caaDialogFamily,
322
+ ];
323
+ //# sourceMappingURL=caa-dialog-family.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"caa-dialog-family.js","sourceRoot":"","sources":["../../src/renderer/caa-dialog-family.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { KtCodegenCaaAlgorithms } from "../KtCodegenRenderer.js";
2
+ import type { KtCodegenRendererFamily } from "./family-registry.js";
3
+ export declare const KT_CODEGEN_CAA_FEATURE_FAMILIES: readonly [KtCodegenRendererFamily<KtCodegenCaaAlgorithms>, KtCodegenRendererFamily<KtCodegenCaaAlgorithms>, KtCodegenRendererFamily<KtCodegenCaaAlgorithms>];
4
+ //# sourceMappingURL=caa-feature-families.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"caa-feature-families.d.ts","sourceRoot":"","sources":["../../src/renderer/caa-feature-families.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,sBAAsB,EAGvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAsVpE,eAAO,MAAM,+BAA+B,8JAImC,CAAC"}
@@ -0,0 +1,250 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ import { ktCodegenRenderLegacyEnd, ktCodegenRenderLegacyNotes, ktCodegenRenderLegacyStart, } from "./legacy-compatibility.js";
3
+ const CAA_INTERFACE_BLOCKS = [
4
+ "IMPLEMENTS HEAD GET",
5
+ "IMPLEMENTS HEAD SET",
6
+ "INTERFACES HEAD GET",
7
+ "INTERFACES HEAD SET",
8
+ ];
9
+ const CAA_FEATURE_IO_BLOCKS = [
10
+ "IMPLEMENTS CPP GET",
11
+ "IMPLEMENTS CPP SET",
12
+ "IMPLEMENTS PARAM GET",
13
+ "IMPLEMENTS PARAM SET",
14
+ ];
15
+ const CAA_INTERFACE_BLOCK_SET = new Set(CAA_INTERFACE_BLOCKS);
16
+ /** 判断旧接口头文件块生成时是否保留当前 Item。 */
17
+ function ktCodegenIsCaaInterfaceItem(item, nameSuffix) {
18
+ if (item.nameSuffix !== nameSuffix || item.id === -1)
19
+ return false;
20
+ return item.id < 100 || item.id >= 200;
21
+ }
22
+ /** 按旧 VB 规则生成 CAA 实现类或纯虚接口类的 Get/Set 声明。 */
23
+ function ktCodegenRenderCaaInterfaceLines(region, items, isParamSpecList) {
24
+ const prefix = region.start.linePrefix;
25
+ const isGet = region.blockKey === "IMPLEMENTS HEAD GET" ||
26
+ region.blockKey === "INTERFACES HEAD GET";
27
+ const isVirtual = region.blockKey === "INTERFACES HEAD GET" ||
28
+ region.blockKey === "INTERFACES HEAD SET";
29
+ const lines = ktCodegenRenderLegacyStart(region);
30
+ // 旧方法使用 CodeAppendLine,public 标签不附加 `_prefix`。
31
+ lines.push(`public: // ${isGet ? "Get" : "Set"}`);
32
+ items.forEach((item, index) => {
33
+ if (index > 0)
34
+ lines.push("");
35
+ lines.push(...ktCodegenRenderLegacyNotes(item, prefix, isGet ? 2 : 1, isParamSpecList));
36
+ if (isGet) {
37
+ const listSpec = isParamSpecList(item);
38
+ const declaration = listSpec
39
+ ? `HRESULT Get${item.paramString}(${item.dataType}& value) const`
40
+ : `${item.dataType} Get${item.paramString}() const`;
41
+ lines.push(`${prefix}${isVirtual ? "virtual " : ""}${declaration}${isVirtual ? " = 0" : ""};`);
42
+ }
43
+ else {
44
+ const declaration = `HRESULT Set${item.paramString}(const ${item.dataType}& value, const CATBoolean& checkExist = CATTrue)`;
45
+ lines.push(`${prefix}${isVirtual ? "virtual " : ""}${declaration}${isVirtual ? " = 0" : ""};`);
46
+ }
47
+ });
48
+ return [...lines, ...ktCodegenRenderLegacyEnd(region)];
49
+ }
50
+ /** 判断旧 Params Class Get/Set 是否保留当前 Item:仅允许 ID 1~99。 */
51
+ function ktCodegenIsCaaParamsClassItem(item, nameSuffix) {
52
+ return item.nameSuffix === nameSuffix && item.id > 0 && item.id < 100;
53
+ }
54
+ /** 按旧 VB 规则生成 CAA 实现类 CPP 中的单参数 Get/Set 函数。 */
55
+ function ktCodegenRenderCaaFeatureCppLines(context, region, items, algorithms) {
56
+ const prefix = region.start.linePrefix;
57
+ const isGet = region.blockKey === "IMPLEMENTS CPP GET";
58
+ const className = `${context.param.namePrefix}E${context.param.nameMiddle}${region.nameSuffix}`;
59
+ const lines = [...ktCodegenRenderLegacyStart(region), ""];
60
+ for (const item of items) {
61
+ const listSpec = algorithms.isParamSpecList(item);
62
+ lines.push(`${prefix}//-----------------------------------------------`);
63
+ if (isGet) {
64
+ const returnType = listSpec ? "HRESULT" : item.dataType;
65
+ const parameter = listSpec ? `${item.dataType}& value` : "";
66
+ lines.push(`${prefix}${returnType} ${className}::Get${item.paramString}(${parameter}) const // ${item.id}`, `${prefix}{`);
67
+ const convertToInt = !listSpec && item.tcKind === "tk_integer" && item.dataType.toLowerCase() !== "int";
68
+ if (!listSpec) {
69
+ const defaultValue = algorithms.formatDefaultValue(item);
70
+ if (convertToInt) {
71
+ lines.push(`${prefix} int value = (int)(${defaultValue});`);
72
+ }
73
+ else if (defaultValue.length > 0) {
74
+ lines.push(`${prefix} ${item.dataType} value(${defaultValue});`);
75
+ }
76
+ else {
77
+ lines.push(`${prefix} ${item.dataType} value;`);
78
+ }
79
+ }
80
+ if (listSpec) {
81
+ if (item.dataType === `${context.param.nameSpace}::SpecObjectCollect`) {
82
+ const orderSuffix = algorithms.getLastStandaloneUppercase(item.paramString);
83
+ lines.push(`${prefix} value.RemoveAll();`, `${prefix} value.SetIsOrderBySerial(GetIsOrderBySerial${orderSuffix}());`,
84
+ // 旧 StringOut 在第二个 vbNewLine 后只追加四个空格,没有 `_prefix`。
85
+ ` return ktcSpecRW.GetListValue("${item.paramString}", value);`);
86
+ }
87
+ else {
88
+ lines.push(`${prefix} return ktcSpecRW.GetListValue("${item.paramString}", value);`);
89
+ }
90
+ }
91
+ else {
92
+ const getFunction = item.tcKind.toLowerCase() === "tk_specobject" ? "GetSpecValue" : "GetValue";
93
+ lines.push(`${prefix} ktcSpecRW.${getFunction}("${item.paramString}", value);`, `${prefix} return ${convertToInt ? `(${item.dataType})` : ""}value;`);
94
+ }
95
+ lines.push(`${prefix}}`);
96
+ continue;
97
+ }
98
+ lines.push(`${prefix}HRESULT ${className}::Set${item.paramString}(const ${item.dataType}& value, const CATBoolean& checkExist) // ${item.id}`, `${prefix}{`);
99
+ if (listSpec) {
100
+ lines.push(`${prefix} return ktcSpecRW.SetListValue("${item.paramString}", value, checkExist);`);
101
+ }
102
+ else if (item.tcKind.toLowerCase() === "tk_specobject") {
103
+ lines.push(`${prefix} return ktcSpecRW.SetSpecValue("${item.paramString}", value, checkExist);`);
104
+ }
105
+ else if (item.tcKind === "tk_integer" && item.dataType.toLowerCase() !== "int") {
106
+ lines.push(`${prefix} int valueInput = (int)value;`, `${prefix} return ktcSpecRW.SetValue("${item.paramString}", valueInput, checkExist);`);
107
+ }
108
+ else {
109
+ lines.push(`${prefix} return ktcSpecRW.SetValue("${item.paramString}", value, checkExist);`);
110
+ }
111
+ lines.push(`${prefix}}`);
112
+ }
113
+ return [...lines, ...ktCodegenRenderLegacyEnd(region)];
114
+ }
115
+ /** 按旧 VB 规则生成 Param 聚合对象与单参数 Get/Set 之间的桥接语句。 */
116
+ function ktCodegenRenderCaaParamsClassLines(region, items, isParamSpecList) {
117
+ const prefix = region.start.linePrefix;
118
+ const isGet = region.blockKey === "IMPLEMENTS PARAM GET";
119
+ const lines = [...ktCodegenRenderLegacyStart(region), ""];
120
+ for (const item of items) {
121
+ if (isGet) {
122
+ lines.push(isParamSpecList(item)
123
+ ? `${prefix}Get${item.paramString}(value.${item.paramString}); // ${item.id}`
124
+ : `${prefix}value.${item.paramString} = Get${item.paramString}(); // ${item.id}`);
125
+ continue;
126
+ }
127
+ lines.push(`${prefix}hr = Set${item.paramString}(value.${item.paramString}); // ${item.id}`, `${prefix}if (FAILED(hr)) {`, `${prefix} msg.Append("\\nSet Parameter of ${item.paramString} Error!");`, `${prefix} findError = TRUE;`, `${prefix}}`);
128
+ }
129
+ if (!isGet) {
130
+ lines.push(`${prefix}if (findError) {`, `${prefix} SetErrMsg(msg);`, `${prefix} return E_FAIL;`, `${prefix}}`);
131
+ }
132
+ return [...lines, ...ktCodegenRenderLegacyEnd(region)];
133
+ }
134
+ /** 判断 Catalog 块是否保留 Item:仅排除旧保留段 ID 100~199。 */
135
+ function ktCodegenIsCaaCatalogItem(item, nameSuffix) {
136
+ return (item.nameSuffix === nameSuffix &&
137
+ !(item.id >= 100 && item.id < 200));
138
+ }
139
+ /** 按旧 Catalog 参数注册格式生成注释、SetValue 和列表追加语句。 */
140
+ function ktCodegenRenderCaaCatalogLines(region, items, algorithms) {
141
+ const prefix = region.start.linePrefix;
142
+ const lines = ktCodegenRenderLegacyStart(region);
143
+ for (const item of items) {
144
+ const notes = item.notes.length > 0 ? `\t${item.notes}` : "";
145
+ lines.push(`${prefix}// ${item.id}; \t${item.name}; ${item.author}; ${item.createDate};${notes}`);
146
+ const listValue = item.isList || algorithms.isPointOrVector3DType(item.dataType);
147
+ const setFunction = listValue ? "SetTKListValue" : "SetValue";
148
+ lines.push(`${prefix}item.${setFunction}("${item.paramString}", ${item.tcKind}, ${item.catAttrInOut});`, `${prefix}itemList.push_back(item);`);
149
+ }
150
+ return [...lines, ...ktCodegenRenderLegacyEnd(region)];
151
+ }
152
+ /** 判断 Factory On Tree 块是否保留 Item。 */
153
+ function ktCodegenIsCaaFactoryTreeItem(item, nameSuffix) {
154
+ return (item.nameSuffix === nameSuffix &&
155
+ item.id >= -1 &&
156
+ (item.isOnTree || item.id === -1));
157
+ }
158
+ /** 按旧 Factory On Tree 规则生成参数工厂创建和树显示标志。 */
159
+ function ktCodegenRenderCaaFactoryTreeLines(region, items, formatTreeName) {
160
+ const prefix = region.start.linePrefix;
161
+ const lines = ktCodegenRenderLegacyStart(region);
162
+ for (const item of items) {
163
+ lines.push("");
164
+ const notes = item.notes.length > 0 ? ` ${item.notes}` : "";
165
+ lines.push(`${prefix}// ${item.id}, ${item.paramString},${notes}`);
166
+ if (item.tcKind !== "tk_specobject") {
167
+ // 旧代码把校验错误直接写进候选代码,且不附加 `_prefix`。
168
+ lines.push("发现错误,TCKKind应该是tk_specobject");
169
+ }
170
+ lines.push(`${prefix}spListParmName.Append("${item.paramString}");`);
171
+ if (item.id === -1) {
172
+ lines.push(`${prefix}spListParm.Append(piParmFactory->CreateInteger("Temp Spec", 0));`);
173
+ }
174
+ else {
175
+ const unit = item.unit.toLowerCase();
176
+ let createFunction;
177
+ if (unit === "mm") {
178
+ if (item.dataType !== "double")
179
+ lines.push("发现错误,DataType应该是double");
180
+ createFunction = "CreateLength";
181
+ }
182
+ else if (unit === "degree") {
183
+ if (item.dataType !== "double")
184
+ lines.push("发现错误,DataType应该是double");
185
+ createFunction = "CreateAngle";
186
+ }
187
+ else if (item.dataType === "int") {
188
+ createFunction = "CreateInteger";
189
+ }
190
+ else if (item.dataType === "double") {
191
+ createFunction = "CreateReal";
192
+ }
193
+ else if (item.dataType === "CATBoolean") {
194
+ createFunction = "CreateBoolean";
195
+ }
196
+ else if (item.dataType === "CATUnicodeString") {
197
+ createFunction = "CreateString";
198
+ }
199
+ else {
200
+ createFunction = `没有处理此类型<${item.dataType}>请告知杨海华`;
201
+ }
202
+ const title = formatTreeName(item.paramString);
203
+ lines.push(`${prefix}spListParm.Append(piParmFactory->${createFunction}("${title}", parameter->${item.paramString}));`);
204
+ }
205
+ lines.push(`${prefix}ListOnTree.Append(${item.id === -1 ? "false" : "true"});`);
206
+ }
207
+ return [...lines, ...ktCodegenRenderLegacyEnd(region)];
208
+ }
209
+ const featureIoFamily = {
210
+ id: "caa.feature-io",
211
+ blockKeys: [...CAA_INTERFACE_BLOCKS, ...CAA_FEATURE_IO_BLOCKS],
212
+ renderRegion(context, region, algorithms) {
213
+ const isParamsClass = region.blockKey === "IMPLEMENTS PARAM GET" ||
214
+ region.blockKey === "IMPLEMENTS PARAM SET";
215
+ const items = context.param.items.filter((item) => isParamsClass
216
+ ? ktCodegenIsCaaParamsClassItem(item, region.nameSuffix)
217
+ : ktCodegenIsCaaInterfaceItem(item, region.nameSuffix));
218
+ const lines = CAA_INTERFACE_BLOCK_SET.has(region.blockKey)
219
+ ? ktCodegenRenderCaaInterfaceLines(region, items, algorithms.isParamSpecList)
220
+ : isParamsClass
221
+ ? ktCodegenRenderCaaParamsClassLines(region, items, algorithms.isParamSpecList)
222
+ : ktCodegenRenderCaaFeatureCppLines(context, region, items, algorithms);
223
+ return { items, lines };
224
+ },
225
+ };
226
+ const catalogFamily = {
227
+ id: "caa.catalog",
228
+ blockKeys: ["CATALOG PARAMS"],
229
+ renderRegion(context, region, algorithms) {
230
+ const items = context.param.items.filter((item) => ktCodegenIsCaaCatalogItem(item, region.nameSuffix));
231
+ return { items, lines: ktCodegenRenderCaaCatalogLines(region, items, algorithms) };
232
+ },
233
+ };
234
+ const factoryTreeFamily = {
235
+ id: "caa.factory-tree",
236
+ blockKeys: ["FACTRY ON TREE"],
237
+ renderRegion(context, region, algorithms) {
238
+ const items = context.param.items.filter((item) => ktCodegenIsCaaFactoryTreeItem(item, region.nameSuffix));
239
+ return {
240
+ items,
241
+ lines: ktCodegenRenderCaaFactoryTreeLines(region, items, algorithms.formatTreeName),
242
+ };
243
+ },
244
+ };
245
+ export const KT_CODEGEN_CAA_FEATURE_FAMILIES = [
246
+ featureIoFamily,
247
+ catalogFamily,
248
+ factoryTreeFamily,
249
+ ];
250
+ //# sourceMappingURL=caa-feature-families.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"caa-feature-families.js","sourceRoot":"","sources":["../../src/renderer/caa-feature-families.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { KtCodegenCaaAlgorithms, KtCodegenRendererContext, KtCodegenRendererResult } from "../KtCodegenRenderer.js";
2
+ /** CAA 只在这里组合能力;具体模板归各 block family 所有。 */
3
+ export declare const KT_CODEGEN_CAA_FAMILIES: readonly [import("./family-registry.js").KtCodegenRendererFamily<KtCodegenCaaAlgorithms>, import("./family-registry.js").KtCodegenRendererFamily<KtCodegenCaaAlgorithms>, import("./family-registry.js").KtCodegenRendererFamily<KtCodegenCaaAlgorithms>, import("./family-registry.js").KtCodegenRendererFamily<KtCodegenCaaAlgorithms>, import("./family-registry.js").KtCodegenRendererFamily<KtCodegenCaaAlgorithms>, import("./family-registry.js").KtCodegenRendererFamily<KtCodegenCaaAlgorithms>, import("./family-registry.js").KtCodegenRendererFamily<KtCodegenCaaAlgorithms>, import("./family-registry.js").KtCodegenRendererFamily<KtCodegenCaaAlgorithms>];
4
+ /** 通过 family registry 生成已迁移 CAA block,并报告未注册目标。 */
5
+ export declare function ktCodegenRenderCaa(context: KtCodegenRendererContext, algorithms: KtCodegenCaaAlgorithms): KtCodegenRendererResult;
6
+ //# sourceMappingURL=caa-renderer.d.ts.map