@phoenix-wing/kt-codegen 0.4.1 → 0.4.3
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 +49 -5
- package/dist/KtCodegenApply.d.ts +9 -0
- package/dist/KtCodegenApply.d.ts.map +1 -1
- package/dist/KtCodegenApply.js +29 -2
- package/dist/KtCodegenApply.js.map +1 -1
- package/dist/KtCodegenMarker.d.ts +8 -3
- package/dist/KtCodegenMarker.d.ts.map +1 -1
- package/dist/KtCodegenMarker.js +80 -56
- package/dist/KtCodegenMarker.js.map +1 -1
- package/dist/KtCodegenRenderer.d.ts +1 -1
- package/dist/KtCodegenRenderer.d.ts.map +1 -1
- package/dist/KtCodegenRenderer.js +3 -1293
- package/dist/KtCodegenRenderer.js.map +1 -1
- package/dist/api/compatibility.d.ts +21 -0
- package/dist/api/compatibility.d.ts.map +1 -0
- package/dist/api/compatibility.js +43 -0
- package/dist/api/compatibility.js.map +1 -0
- package/dist/api/index.d.ts +1 -0
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +1 -0
- package/dist/api/index.js.map +1 -1
- package/dist/model/diagnostic.d.ts +18 -0
- package/dist/model/diagnostic.d.ts.map +1 -1
- package/dist/model/diagnostic.js.map +1 -1
- package/dist/renderer/caa-command-families.d.ts +4 -0
- package/dist/renderer/caa-command-families.d.ts.map +1 -0
- package/dist/renderer/caa-command-families.js +336 -0
- package/dist/renderer/caa-command-families.js.map +1 -0
- package/dist/renderer/caa-dialog-family.d.ts +5 -0
- package/dist/renderer/caa-dialog-family.d.ts.map +1 -0
- package/dist/renderer/caa-dialog-family.js +323 -0
- package/dist/renderer/caa-dialog-family.js.map +1 -0
- package/dist/renderer/caa-feature-families.d.ts +4 -0
- package/dist/renderer/caa-feature-families.d.ts.map +1 -0
- package/dist/renderer/caa-feature-families.js +250 -0
- package/dist/renderer/caa-feature-families.js.map +1 -0
- package/dist/renderer/caa-renderer.d.ts +6 -0
- package/dist/renderer/caa-renderer.d.ts.map +1 -0
- package/dist/renderer/caa-renderer.js +25 -0
- package/dist/renderer/caa-renderer.js.map +1 -0
- package/dist/renderer/cpp-parameter-family.d.ts +7 -0
- package/dist/renderer/cpp-parameter-family.d.ts.map +1 -0
- package/dist/renderer/cpp-parameter-family.js +77 -0
- package/dist/renderer/cpp-parameter-family.js.map +1 -0
- package/dist/renderer/dialog-support.d.ts +6 -0
- package/dist/renderer/dialog-support.d.ts.map +1 -0
- package/dist/renderer/dialog-support.js +16 -0
- package/dist/renderer/dialog-support.js.map +1 -0
- package/dist/renderer/family-registry.d.ts +28 -0
- package/dist/renderer/family-registry.d.ts.map +1 -0
- package/dist/renderer/family-registry.js +55 -0
- package/dist/renderer/family-registry.js.map +1 -0
- package/dist/renderer/legacy-compatibility.d.ts +16 -0
- package/dist/renderer/legacy-compatibility.d.ts.map +1 -0
- package/dist/renderer/legacy-compatibility.js +77 -0
- package/dist/renderer/legacy-compatibility.js.map +1 -0
- package/dist/renderer/qt-dialog-family.d.ts +7 -0
- package/dist/renderer/qt-dialog-family.d.ts.map +1 -0
- package/dist/renderer/qt-dialog-family.js +231 -0
- package/dist/renderer/qt-dialog-family.js.map +1 -0
- package/dist/table/KtCodegenTable.d.ts +24 -6
- package/dist/table/KtCodegenTable.d.ts.map +1 -1
- package/dist/table/KtCodegenTable.js +141 -203
- package/dist/table/KtCodegenTable.js.map +1 -1
- package/dist/table/KtCodegenTableStyle.d.ts +20 -0
- package/dist/table/KtCodegenTableStyle.d.ts.map +1 -0
- package/dist/table/KtCodegenTableStyle.js +207 -0
- package/dist/table/KtCodegenTableStyle.js.map +1 -0
- package/dist/table/KtCodegenTableViewModel.d.ts +45 -0
- package/dist/table/KtCodegenTableViewModel.d.ts.map +1 -0
- package/dist/table/KtCodegenTableViewModel.js +99 -0
- package/dist/table/KtCodegenTableViewModel.js.map +1 -0
- package/doc/KtCodegenTable/345/270/203/345/261/200/344/270/216/346/212/230/345/217/240/345/245/221/347/272/246.md +106 -0
- package/doc//350/207/252/345/212/250/344/273/243/347/240/201/346/240/207/350/256/260/346/211/253/346/217/217.md +8 -9
- package/package.json +4 -2
- package/tests/fixtures/contracts/apply-projection-v1.json +82 -0
- package/tests/fixtures/contracts/codegen-host-contract-v1.json +280 -0
|
@@ -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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"caa-renderer.d.ts","sourceRoot":"","sources":["../../src/renderer/caa-renderer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,sBAAsB,EACtB,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,yBAAyB,CAAC;AAMjC,2CAA2C;AAC3C,eAAO,MAAM,uBAAuB,2oBAI1B,CAAC;AAEX,mDAAmD;AACnD,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,wBAAwB,EACjC,UAAU,EAAE,sBAAsB,GACjC,uBAAuB,CAWzB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
import { KT_CODEGEN_CAA_COMMAND_FAMILIES } from "./caa-command-families.js";
|
|
3
|
+
import { KT_CODEGEN_CAA_DIALOG_FAMILIES } from "./caa-dialog-family.js";
|
|
4
|
+
import { KT_CODEGEN_CAA_FEATURE_FAMILIES } from "./caa-feature-families.js";
|
|
5
|
+
import { ktCodegenRenderRegisteredFamilies } from "./family-registry.js";
|
|
6
|
+
/** CAA 只在这里组合能力;具体模板归各 block family 所有。 */
|
|
7
|
+
export const KT_CODEGEN_CAA_FAMILIES = [
|
|
8
|
+
...KT_CODEGEN_CAA_FEATURE_FAMILIES,
|
|
9
|
+
...KT_CODEGEN_CAA_DIALOG_FAMILIES,
|
|
10
|
+
...KT_CODEGEN_CAA_COMMAND_FAMILIES,
|
|
11
|
+
];
|
|
12
|
+
/** 通过 family registry 生成已迁移 CAA block,并报告未注册目标。 */
|
|
13
|
+
export function ktCodegenRenderCaa(context, algorithms) {
|
|
14
|
+
return ktCodegenRenderRegisteredFamilies(context, algorithms, KT_CODEGEN_CAA_FAMILIES, {
|
|
15
|
+
supportedTargets: [
|
|
16
|
+
"caa.core",
|
|
17
|
+
"caa.model",
|
|
18
|
+
"caa.feature-io",
|
|
19
|
+
"caa.control",
|
|
20
|
+
"caa.dialog",
|
|
21
|
+
],
|
|
22
|
+
noFamilyMessage: (target) => `${target} has no migrated CAA block renderer yet.`,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=caa-renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"caa-renderer.js","sourceRoot":"","sources":["../../src/renderer/caa-renderer.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAOtC,OAAO,EAAE,+BAA+B,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,+BAA+B,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAE,iCAAiC,EAAE,MAAM,sBAAsB,CAAC;AAEzE,2CAA2C;AAC3C,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,GAAG,+BAA+B;IAClC,GAAG,8BAA8B;IACjC,GAAG,+BAA+B;CAC1B,CAAC;AAEX,mDAAmD;AACnD,MAAM,UAAU,kBAAkB,CAChC,OAAiC,EACjC,UAAkC;IAElC,OAAO,iCAAiC,CAAC,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE;QACrF,gBAAgB,EAAE;YAChB,UAAU;YACV,WAAW;YACX,gBAAgB;YAChB,aAAa;YACb,YAAY;SACb;QACD,eAAe,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,MAAM,0CAA0C;KACjF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { KtCodegenDefaultValueFormatter, KtCodegenRendererContext, KtCodegenRendererResult } from "../KtCodegenRenderer.js";
|
|
2
|
+
import type { KtCodegenRendererFamily } from "./family-registry.js";
|
|
3
|
+
export declare const KT_CODEGEN_CPP_PARAMETER_BLOCKS: readonly ["PARAM CONSTRUCTOR", "PARAM DECLARATION", "PARAM DESTRUCTOR", "PARAM EQUAL"];
|
|
4
|
+
export declare const KT_CODEGEN_CPP_PARAMETER_FAMILIES: readonly [KtCodegenRendererFamily<KtCodegenDefaultValueFormatter>];
|
|
5
|
+
/** 通过 block family 注册表生成普通 C++ Parameter 目标。 */
|
|
6
|
+
export declare function ktCodegenRenderCppParameter(context: KtCodegenRendererContext, formatDefaultValue: KtCodegenDefaultValueFormatter): KtCodegenRendererResult;
|
|
7
|
+
//# sourceMappingURL=cpp-parameter-family.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cpp-parameter-family.d.ts","sourceRoot":"","sources":["../../src/renderer/cpp-parameter-family.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,8BAA8B,EAC9B,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAQpE,eAAO,MAAM,+BAA+B,wFAKK,CAAC;AAgFlD,eAAO,MAAM,iCAAiC,oEAEyC,CAAC;AAExF,gDAAgD;AAChD,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,wBAAwB,EACjC,kBAAkB,EAAE,8BAA8B,GACjD,uBAAuB,CAUzB"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
import { ktCodegenRenderRegisteredFamilies } from "./family-registry.js";
|
|
3
|
+
import { ktCodegenRenderLegacyEnd, ktCodegenRenderLegacyNotes, ktCodegenRenderLegacyStart, } from "./legacy-compatibility.js";
|
|
4
|
+
export const KT_CODEGEN_CPP_PARAMETER_BLOCKS = [
|
|
5
|
+
"PARAM CONSTRUCTOR",
|
|
6
|
+
"PARAM DECLARATION",
|
|
7
|
+
"PARAM DESTRUCTOR",
|
|
8
|
+
"PARAM EQUAL",
|
|
9
|
+
];
|
|
10
|
+
/** 按旧 VB 规则生成一个普通 C++ Parameter 自动代码块的逻辑行。 */
|
|
11
|
+
function ktCodegenRenderCppParameterLines(region, items, formatDefaultValue) {
|
|
12
|
+
const prefix = region.start.linePrefix;
|
|
13
|
+
const lines = ktCodegenRenderLegacyStart(region);
|
|
14
|
+
switch (region.blockKey) {
|
|
15
|
+
case "PARAM CONSTRUCTOR":
|
|
16
|
+
for (const item of items) {
|
|
17
|
+
const initializerPrefix = item.id === 1 ? ": " : ", ";
|
|
18
|
+
lines.push(`${prefix}${initializerPrefix}${item.paramString}(${formatDefaultValue(item)}) // ${item.id}`);
|
|
19
|
+
}
|
|
20
|
+
// 旧方法使用 Trim 写出 End,故 clang-format 与 End 不保留 `_prefix`。
|
|
21
|
+
lines.push("", "// clang-format on", `// ${region.end.text}`);
|
|
22
|
+
return lines;
|
|
23
|
+
case "PARAM EQUAL":
|
|
24
|
+
for (const item of items) {
|
|
25
|
+
// 旧 VB 使用 IndexOf("*") > 0;星号位于首字符时不会注释该行。
|
|
26
|
+
const pointerPrefix = item.dataType.indexOf("*") > 0 ? "// " : "";
|
|
27
|
+
lines.push(`${prefix}${pointerPrefix}${item.paramString} = iOriginal.${item.paramString}; // ${item.id}`);
|
|
28
|
+
}
|
|
29
|
+
return [...lines, ...ktCodegenRenderLegacyEnd(region)];
|
|
30
|
+
case "PARAM DESTRUCTOR":
|
|
31
|
+
for (const item of items) {
|
|
32
|
+
if (item.dataType.toLowerCase() === "catispecobject_var") {
|
|
33
|
+
lines.push(`${prefix}${item.paramString} = NULL_var; // ${item.id}`);
|
|
34
|
+
}
|
|
35
|
+
else if (item.dataType.includes("*")) {
|
|
36
|
+
lines.push(`${prefix}${item.paramString} = NULL; // ${item.id}`);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
lines.push(`${prefix}// ${item.paramString} = ${formatDefaultValue(item, true)}; // ${item.id}`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return [...lines, ...ktCodegenRenderLegacyEnd(region)];
|
|
43
|
+
case "PARAM DECLARATION":
|
|
44
|
+
lines.push("", `${prefix}// @app Kt Auto Code`, `${prefix}// @version 5.0.0, (2024)`, "");
|
|
45
|
+
items.forEach((item, index) => {
|
|
46
|
+
if (index > 0)
|
|
47
|
+
lines.push("");
|
|
48
|
+
lines.push(...ktCodegenRenderLegacyNotes(item, prefix));
|
|
49
|
+
lines.push(`${prefix}${item.dataType} ${item.paramString};`);
|
|
50
|
+
});
|
|
51
|
+
return [...lines, ...ktCodegenRenderLegacyEnd(region)];
|
|
52
|
+
default:
|
|
53
|
+
return [];
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
const cppParameterFamily = {
|
|
57
|
+
id: "cpp.parameter",
|
|
58
|
+
blockKeys: KT_CODEGEN_CPP_PARAMETER_BLOCKS,
|
|
59
|
+
renderRegion(context, region, formatDefaultValue) {
|
|
60
|
+
const items = context.param.items.filter((item) => item.nameSuffix === region.nameSuffix && item.id >= 1);
|
|
61
|
+
return {
|
|
62
|
+
items,
|
|
63
|
+
lines: ktCodegenRenderCppParameterLines(region, items, formatDefaultValue),
|
|
64
|
+
};
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
export const KT_CODEGEN_CPP_PARAMETER_FAMILIES = [
|
|
68
|
+
cppParameterFamily,
|
|
69
|
+
];
|
|
70
|
+
/** 通过 block family 注册表生成普通 C++ Parameter 目标。 */
|
|
71
|
+
export function ktCodegenRenderCppParameter(context, formatDefaultValue) {
|
|
72
|
+
return ktCodegenRenderRegisteredFamilies(context, formatDefaultValue, KT_CODEGEN_CPP_PARAMETER_FAMILIES, {
|
|
73
|
+
supportedTargets: ["cpp.parameter"],
|
|
74
|
+
noFamilyMessage: (target) => `${target} has no registered C++ block family.`,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=cpp-parameter-family.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cpp-parameter-family.js","sourceRoot":"","sources":["../../src/renderer/cpp-parameter-family.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { KtCodegenItem } from "../KtCodegenItem.js";
|
|
2
|
+
/** 取得旧 UI 多控件分支使用的集合起始下标;不支持时返回 `null`。 */
|
|
3
|
+
export declare function ktCodegenLegacyDialogListIndex(dataType: string, includeFloat: boolean): number | null;
|
|
4
|
+
/** 生成移除下划线后的旧 CAA/Qt 控件成员后缀。 */
|
|
5
|
+
export declare function ktCodegenDialogParamName(item: KtCodegenItem): string;
|
|
6
|
+
//# sourceMappingURL=dialog-support.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dialog-support.d.ts","sourceRoot":"","sources":["../../src/renderer/dialog-support.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,2CAA2C;AAC3C,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,OAAO,GACpB,MAAM,GAAG,IAAI,CAKf;AAED,gCAAgC;AAChC,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAEpE"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
/** 取得旧 UI 多控件分支使用的集合起始下标;不支持时返回 `null`。 */
|
|
3
|
+
export function ktCodegenLegacyDialogListIndex(dataType, includeFloat) {
|
|
4
|
+
if (dataType === "CATRawColldouble")
|
|
5
|
+
return 1;
|
|
6
|
+
if (dataType === "ListKtdouble" || dataType === "ListKtint")
|
|
7
|
+
return 0;
|
|
8
|
+
if (includeFloat && dataType === "ListKtfloat")
|
|
9
|
+
return 0;
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
/** 生成移除下划线后的旧 CAA/Qt 控件成员后缀。 */
|
|
13
|
+
export function ktCodegenDialogParamName(item) {
|
|
14
|
+
return item.paramString.replaceAll("_", "");
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=dialog-support.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dialog-support.js","sourceRoot":"","sources":["../../src/renderer/dialog-support.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAItC,2CAA2C;AAC3C,MAAM,UAAU,8BAA8B,CAC5C,QAAgB,EAChB,YAAqB;IAErB,IAAI,QAAQ,KAAK,kBAAkB;QAAE,OAAO,CAAC,CAAC;IAC9C,IAAI,QAAQ,KAAK,cAAc,IAAI,QAAQ,KAAK,WAAW;QAAE,OAAO,CAAC,CAAC;IACtE,IAAI,YAAY,IAAI,QAAQ,KAAK,aAAa;QAAE,OAAO,CAAC,CAAC;IACzD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,gCAAgC;AAChC,MAAM,UAAU,wBAAwB,CAAC,IAAmB;IAC1D,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type KtCodegenBlockKey } from "../blocks/legacy-blocks.js";
|
|
2
|
+
import type { KtCodegenMarkerRegion } from "../KtCodegenMarker.js";
|
|
3
|
+
import type { KtCodegenItem } from "../KtCodegenItem.js";
|
|
4
|
+
import type { KtCodegenRendererContext, KtCodegenRendererResult } from "../KtCodegenRenderer.js";
|
|
5
|
+
/** 一个 family 对单个安全 Marker 区域的纯渲染结果。 */
|
|
6
|
+
export interface KtCodegenRenderedRegion {
|
|
7
|
+
readonly items: readonly KtCodegenItem[];
|
|
8
|
+
readonly lines: readonly string[];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Block family strategy:注册表只映射能力,模板实现留在各 family 模块。
|
|
12
|
+
*
|
|
13
|
+
* `services` 由 Core 注入并保持只读,避免 family 反向依赖 Core。
|
|
14
|
+
*/
|
|
15
|
+
export interface KtCodegenRendererFamily<TServices> {
|
|
16
|
+
readonly id: string;
|
|
17
|
+
readonly blockKeys: readonly KtCodegenBlockKey[];
|
|
18
|
+
renderRegion(context: KtCodegenRendererContext, region: KtCodegenMarkerRegion, services: TServices): KtCodegenRenderedRegion;
|
|
19
|
+
}
|
|
20
|
+
export interface KtCodegenFamilyRegistryOptions {
|
|
21
|
+
readonly supportedTargets: readonly KtCodegenRendererContext["target"][];
|
|
22
|
+
readonly noFamilyMessage: (target: KtCodegenRendererContext["target"]) => string;
|
|
23
|
+
}
|
|
24
|
+
/** 建立不可重复的 block → family 能力映射;注册表本身不含模板。 */
|
|
25
|
+
export declare function ktCodegenCreateRendererFamilyRegistry<TServices>(families: readonly KtCodegenRendererFamily<TServices>[]): ReadonlyMap<KtCodegenBlockKey, KtCodegenRendererFamily<TServices>>;
|
|
26
|
+
/** 用 family 注册表生成一个目标,统一处理 artifact 绑定、兼容告警和待迁移诊断。 */
|
|
27
|
+
export declare function ktCodegenRenderRegisteredFamilies<TServices>(context: KtCodegenRendererContext, services: TServices, families: readonly KtCodegenRendererFamily<TServices>[], options: KtCodegenFamilyRegistryOptions): KtCodegenRendererResult;
|
|
28
|
+
//# sourceMappingURL=family-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"family-registry.d.ts","sourceRoot":"","sources":["../../src/renderer/family-registry.ts"],"names":[],"mappings":"AAEA,OAAO,EAAqB,KAAK,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACvF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EACV,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,yBAAyB,CAAC;AAMjC,uCAAuC;AACvC,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED;;;;GAIG;AACH,MAAM,WAAW,uBAAuB,CAAC,SAAS;IAChD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACjD,YAAY,CACV,OAAO,EAAE,wBAAwB,EACjC,MAAM,EAAE,qBAAqB,EAC7B,QAAQ,EAAE,SAAS,GAClB,uBAAuB,CAAC;CAC5B;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,gBAAgB,EAAE,SAAS,wBAAwB,CAAC,QAAQ,CAAC,EAAE,CAAC;IACzE,QAAQ,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,wBAAwB,CAAC,QAAQ,CAAC,KAAK,MAAM,CAAC;CAClF;AAED,6CAA6C;AAC7C,wBAAgB,qCAAqC,CAAC,SAAS,EAC7D,QAAQ,EAAE,SAAS,uBAAuB,CAAC,SAAS,CAAC,EAAE,GACtD,WAAW,CAAC,iBAAiB,EAAE,uBAAuB,CAAC,SAAS,CAAC,CAAC,CAcpE;AAED,sDAAsD;AACtD,wBAAgB,iCAAiC,CAAC,SAAS,EACzD,OAAO,EAAE,wBAAwB,EACjC,QAAQ,EAAE,SAAS,EACnB,QAAQ,EAAE,SAAS,uBAAuB,CAAC,SAAS,CAAC,EAAE,EACvD,OAAO,EAAE,8BAA8B,GACtC,uBAAuB,CAmDzB"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
import { ktCodegenGetBlock } from "../blocks/legacy-blocks.js";
|
|
3
|
+
import { ktCodegenAppendRegionArtifact, ktCodegenLegacyDeprecatedDiagnostic, } from "./legacy-compatibility.js";
|
|
4
|
+
/** 建立不可重复的 block → family 能力映射;注册表本身不含模板。 */
|
|
5
|
+
export function ktCodegenCreateRendererFamilyRegistry(families) {
|
|
6
|
+
const registry = new Map();
|
|
7
|
+
for (const family of families) {
|
|
8
|
+
for (const blockKey of family.blockKeys) {
|
|
9
|
+
const existing = registry.get(blockKey);
|
|
10
|
+
if (existing) {
|
|
11
|
+
throw new Error(`Renderer block ${blockKey} is registered by both ${existing.id} and ${family.id}.`);
|
|
12
|
+
}
|
|
13
|
+
registry.set(blockKey, family);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return registry;
|
|
17
|
+
}
|
|
18
|
+
/** 用 family 注册表生成一个目标,统一处理 artifact 绑定、兼容告警和待迁移诊断。 */
|
|
19
|
+
export function ktCodegenRenderRegisteredFamilies(context, services, families, options) {
|
|
20
|
+
const registry = ktCodegenCreateRendererFamilyRegistry(families);
|
|
21
|
+
const artifacts = [];
|
|
22
|
+
const diagnostics = [];
|
|
23
|
+
const requestedBlocks = new Set(context.blockKeys);
|
|
24
|
+
for (const region of context.markerRegions) {
|
|
25
|
+
const family = registry.get(region.blockKey);
|
|
26
|
+
if (!family ||
|
|
27
|
+
!requestedBlocks.has(region.blockKey) ||
|
|
28
|
+
ktCodegenGetBlock(region.blockKey).target !== context.target) {
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
const rendered = family.renderRegion(context, region, services);
|
|
32
|
+
const artifactCount = artifacts.length;
|
|
33
|
+
ktCodegenAppendRegionArtifact(context, region, rendered.items, rendered.lines, artifacts, diagnostics);
|
|
34
|
+
if (artifacts.length > artifactCount &&
|
|
35
|
+
ktCodegenGetBlock(region.blockKey).legacyState === "legacy-deprecated") {
|
|
36
|
+
diagnostics.push(ktCodegenLegacyDeprecatedDiagnostic(region));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
const targetBlocks = context.blockKeys.filter((blockKey) => ktCodegenGetBlock(blockKey).target === context.target);
|
|
40
|
+
const pendingBlocks = targetBlocks.filter((blockKey) => !registry.has(blockKey));
|
|
41
|
+
const targetSupported = options.supportedTargets.includes(context.target);
|
|
42
|
+
const status = targetSupported && pendingBlocks.length === 0 ? "ready" : "scaffold";
|
|
43
|
+
if (status === "scaffold") {
|
|
44
|
+
diagnostics.push({
|
|
45
|
+
code: "renderer.blocks-pending",
|
|
46
|
+
severity: "info",
|
|
47
|
+
message: pendingBlocks.length > 0
|
|
48
|
+
? `${context.target} still has pending blocks: ${pendingBlocks.join(", ")}.`
|
|
49
|
+
: options.noFamilyMessage(context.target),
|
|
50
|
+
path: { source: "renderer", field: context.target },
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
return { status, artifacts, diagnostics };
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=family-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"family-registry.js","sourceRoot":"","sources":["../../src/renderer/family-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { KtCodegenArtifact } from "../api/contracts.js";
|
|
2
|
+
import type { KtCodegenMarkerRegion } from "../KtCodegenMarker.js";
|
|
3
|
+
import type { KtCodegenItem } from "../KtCodegenItem.js";
|
|
4
|
+
import type { KtCodegenParamSpecListClassifier, KtCodegenRendererContext } from "../KtCodegenRenderer.js";
|
|
5
|
+
import type { KtCodegenDiagnostic } from "../model/diagnostic.js";
|
|
6
|
+
/** 按旧 `CodeAppendNotes` 的0/1/2模式创建 Doxygen 注释。 */
|
|
7
|
+
export declare function ktCodegenRenderLegacyNotes(item: KtCodegenItem, prefix: string, mode?: 0 | 1 | 2, isParamSpecList?: KtCodegenParamSpecListClassifier): string[];
|
|
8
|
+
/** 创建旧 Start 标记和 clang-format off 头部。 */
|
|
9
|
+
export declare function ktCodegenRenderLegacyStart(region: KtCodegenMarkerRegion): string[];
|
|
10
|
+
/** 创建标准旧 clang-format on 和 End 标记尾部。 */
|
|
11
|
+
export declare function ktCodegenRenderLegacyEnd(region: KtCodegenMarkerRegion): string[];
|
|
12
|
+
/** 把逻辑行组装为绑定安全区域的 artifact,或返回快照缺失诊断。 */
|
|
13
|
+
export declare function ktCodegenAppendRegionArtifact(context: KtCodegenRendererContext, region: KtCodegenMarkerRegion, items: readonly KtCodegenItem[], lines: readonly string[], artifacts: KtCodegenArtifact[], diagnostics: KtCodegenDiagnostic[]): void;
|
|
14
|
+
/** 兼容 family 统一产生废弃旧块告警,模板模块无需重复协议文案。 */
|
|
15
|
+
export declare function ktCodegenLegacyDeprecatedDiagnostic(region: KtCodegenMarkerRegion): KtCodegenDiagnostic;
|
|
16
|
+
//# sourceMappingURL=legacy-compatibility.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legacy-compatibility.d.ts","sourceRoot":"","sources":["../../src/renderer/legacy-compatibility.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EACV,gCAAgC,EAChC,wBAAwB,EACzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE,kDAAkD;AAClD,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,CAAC,GAAG,CAAC,GAAG,CAAK,EACnB,eAAe,CAAC,EAAE,gCAAgC,GACjD,MAAM,EAAE,CAiBV;AAED,yCAAyC;AACzC,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,EAAE,CAGlF;AAED,wCAAwC;AACxC,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,EAAE,CAGhF;AAoBD,yCAAyC;AACzC,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,wBAAwB,EACjC,MAAM,EAAE,qBAAqB,EAC7B,KAAK,EAAE,SAAS,aAAa,EAAE,EAC/B,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,SAAS,EAAE,iBAAiB,EAAE,EAC9B,WAAW,EAAE,mBAAmB,EAAE,GACjC,IAAI,CAqBN;AAED,yCAAyC;AACzC,wBAAgB,mCAAmC,CACjD,MAAM,EAAE,qBAAqB,GAC5B,mBAAmB,CAWrB"}
|