c-next 0.1.70 → 0.1.72

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 (205) hide show
  1. package/package.json +1 -1
  2. package/src/lib/__tests__/parseCHeader.mocked.test.ts +69 -54
  3. package/src/lib/parseCHeader.ts +56 -23
  4. package/src/lib/parseWithSymbols.ts +195 -53
  5. package/src/transpiler/Transpiler.ts +180 -63
  6. package/src/transpiler/logic/analysis/FunctionCallAnalyzer.ts +1 -2
  7. package/src/transpiler/logic/analysis/InitializationAnalyzer.ts +1 -2
  8. package/src/transpiler/logic/analysis/PassByValueAnalyzer.ts +51 -2
  9. package/src/transpiler/logic/analysis/__tests__/FunctionCallAnalyzer.test.ts +18 -12
  10. package/src/transpiler/logic/analysis/__tests__/InitializationAnalyzer.test.ts +9 -9
  11. package/src/transpiler/logic/analysis/__tests__/runAnalyzers.test.ts +5 -5
  12. package/src/transpiler/logic/symbols/SymbolTable.ts +729 -265
  13. package/src/transpiler/logic/symbols/SymbolUtils.ts +2 -2
  14. package/src/transpiler/logic/symbols/__tests__/SymbolTable.test.ts +415 -751
  15. package/src/transpiler/logic/symbols/c/__tests__/CResolver.integration.test.ts +573 -0
  16. package/src/transpiler/logic/symbols/c/__tests__/testHelpers.ts +20 -0
  17. package/src/transpiler/logic/symbols/c/collectors/EnumCollector.ts +82 -0
  18. package/src/transpiler/logic/symbols/c/collectors/FunctionCollector.ts +106 -0
  19. package/src/transpiler/logic/symbols/c/collectors/StructCollector.ts +173 -0
  20. package/src/transpiler/logic/symbols/c/collectors/TypedefCollector.ts +35 -0
  21. package/src/transpiler/logic/symbols/c/collectors/VariableCollector.ts +80 -0
  22. package/src/transpiler/logic/symbols/c/index.ts +333 -0
  23. package/src/transpiler/logic/symbols/c/utils/DeclaratorUtils.ts +269 -0
  24. package/src/transpiler/logic/symbols/cnext/__tests__/BitmapCollector.test.ts +50 -11
  25. package/src/transpiler/logic/symbols/cnext/__tests__/CNextResolver.integration.test.ts +45 -34
  26. package/src/transpiler/logic/symbols/cnext/__tests__/EnumCollector.test.ts +30 -13
  27. package/src/transpiler/logic/symbols/cnext/__tests__/FunctionCollector.test.ts +279 -64
  28. package/src/transpiler/logic/symbols/cnext/__tests__/RegisterCollector.test.ts +60 -13
  29. package/src/transpiler/logic/symbols/cnext/__tests__/ScopeCollector.test.ts +40 -37
  30. package/src/transpiler/logic/symbols/cnext/__tests__/StructCollector.test.ts +131 -45
  31. package/src/transpiler/logic/symbols/cnext/__tests__/TSymbolInfoAdapter.test.ts +223 -139
  32. package/src/transpiler/logic/symbols/cnext/__tests__/VariableCollector.test.ts +79 -25
  33. package/src/transpiler/logic/symbols/cnext/__tests__/testUtils.ts +53 -0
  34. package/src/transpiler/logic/symbols/cnext/adapters/TSymbolInfoAdapter.ts +83 -43
  35. package/src/transpiler/logic/symbols/cnext/collectors/BitmapCollector.ts +14 -13
  36. package/src/transpiler/logic/symbols/cnext/collectors/EnumCollector.ts +11 -10
  37. package/src/transpiler/logic/symbols/cnext/collectors/FunctionCollector.ts +83 -34
  38. package/src/transpiler/logic/symbols/cnext/collectors/RegisterCollector.ts +22 -18
  39. package/src/transpiler/logic/symbols/cnext/collectors/ScopeCollector.ts +53 -35
  40. package/src/transpiler/logic/symbols/cnext/collectors/StructCollector.ts +30 -23
  41. package/src/transpiler/logic/symbols/cnext/collectors/VariableCollector.ts +18 -19
  42. package/src/transpiler/logic/symbols/cnext/index.ts +36 -14
  43. package/src/transpiler/logic/symbols/cnext/types/IScopeCollectorResult.ts +2 -2
  44. package/src/transpiler/logic/symbols/cnext/utils/SymbolNameUtils.ts +27 -0
  45. package/src/transpiler/logic/symbols/cpp/__tests__/CppResolver.integration.test.ts +270 -0
  46. package/src/transpiler/logic/symbols/cpp/__tests__/testHelpers.ts +20 -0
  47. package/src/transpiler/logic/symbols/cpp/collectors/ClassCollector.ts +317 -0
  48. package/src/transpiler/logic/symbols/cpp/collectors/EnumCollector.ts +71 -0
  49. package/src/transpiler/logic/symbols/cpp/collectors/FunctionCollector.ts +155 -0
  50. package/src/transpiler/logic/symbols/cpp/collectors/NamespaceCollector.ts +65 -0
  51. package/src/transpiler/logic/symbols/cpp/collectors/TypeAliasCollector.ts +46 -0
  52. package/src/transpiler/logic/symbols/cpp/collectors/VariableCollector.ts +54 -0
  53. package/src/transpiler/logic/symbols/cpp/index.ts +366 -0
  54. package/src/transpiler/logic/symbols/cpp/utils/DeclaratorUtils.ts +248 -0
  55. package/src/transpiler/logic/symbols/shared/IExtractedParameter.ts +18 -0
  56. package/src/transpiler/logic/symbols/shared/ParameterExtractorUtils.ts +73 -0
  57. package/src/transpiler/output/codegen/CodeGenerator.ts +268 -1674
  58. package/src/transpiler/output/codegen/__tests__/CodeGenerator.test.ts +7 -1
  59. package/src/transpiler/output/codegen/assignment/AssignmentClassifier.ts +2 -1
  60. package/src/transpiler/output/codegen/assignment/handlers/AssignmentHandlerUtils.ts +7 -1
  61. package/src/transpiler/output/codegen/assignment/handlers/BitmapHandlers.ts +6 -2
  62. package/src/transpiler/output/codegen/assignment/handlers/RegisterHandlers.ts +2 -1
  63. package/src/transpiler/output/codegen/generators/declarationGenerators/ScopeGenerator.ts +21 -8
  64. package/src/transpiler/output/codegen/generators/declarationGenerators/ScopedRegisterGenerator.ts +3 -2
  65. package/src/transpiler/output/codegen/generators/expressions/CallExprUtils.ts +9 -3
  66. package/src/transpiler/output/codegen/generators/expressions/__tests__/CallExprGenerator.test.ts +3 -4
  67. package/src/transpiler/output/codegen/generators/expressions/__tests__/CallExprUtils.test.ts +4 -8
  68. package/src/transpiler/output/codegen/helpers/ArgumentGenerator.ts +236 -0
  69. package/src/transpiler/output/codegen/helpers/CppConstructorHelper.ts +3 -3
  70. package/src/transpiler/output/codegen/helpers/FunctionContextManager.ts +435 -0
  71. package/src/transpiler/output/codegen/helpers/StringOperationsHelper.ts +203 -0
  72. package/src/transpiler/output/codegen/helpers/SymbolLookupHelper.ts +8 -12
  73. package/src/transpiler/output/codegen/helpers/TypeRegistrationEngine.ts +520 -0
  74. package/src/transpiler/output/codegen/helpers/VariableDeclHelper.ts +735 -0
  75. package/src/transpiler/output/codegen/helpers/VariableDeclarationFormatter.ts +1 -1
  76. package/src/transpiler/output/codegen/helpers/__tests__/ArgumentGenerator.test.ts +521 -0
  77. package/src/transpiler/output/codegen/helpers/__tests__/CppConstructorHelper.test.ts +4 -5
  78. package/src/transpiler/output/codegen/helpers/__tests__/FunctionContextManager.test.ts +983 -0
  79. package/src/transpiler/output/codegen/helpers/__tests__/StringOperationsHelper.test.ts +269 -0
  80. package/src/transpiler/output/codegen/helpers/__tests__/SymbolLookupHelper.test.ts +31 -32
  81. package/src/transpiler/output/codegen/helpers/__tests__/TypeRegistrationEngine.test.ts +186 -0
  82. package/src/transpiler/output/codegen/helpers/__tests__/VariableDeclHelper.test.ts +460 -0
  83. package/src/transpiler/output/codegen/helpers/types/IArgumentGeneratorCallbacks.ts +32 -0
  84. package/src/transpiler/output/codegen/resolution/EnumTypeResolver.ts +5 -1
  85. package/src/transpiler/output/codegen/types/IFunctionContextCallbacks.ts +12 -0
  86. package/src/transpiler/output/codegen/types/IVariableFormatInput.ts +1 -1
  87. package/src/transpiler/output/codegen/utils/QualifiedNameGenerator.ts +114 -0
  88. package/src/transpiler/output/codegen/utils/__tests__/QualifiedNameGenerator.test.ts +183 -0
  89. package/src/transpiler/output/headers/BaseHeaderGenerator.ts +4 -4
  90. package/src/transpiler/output/headers/ExternalTypeHeaderBuilder.ts +7 -7
  91. package/src/transpiler/output/headers/HeaderGenerator.ts +9 -7
  92. package/src/transpiler/output/headers/HeaderGeneratorUtils.ts +19 -20
  93. package/src/transpiler/output/headers/__tests__/BaseHeaderGenerator.test.ts +15 -18
  94. package/src/transpiler/output/headers/__tests__/CHeaderGenerator.test.ts +63 -64
  95. package/src/transpiler/output/headers/__tests__/CppHeaderGenerator.test.ts +36 -32
  96. package/src/transpiler/output/headers/__tests__/ExternalTypeHeaderBuilder.test.ts +26 -26
  97. package/src/transpiler/output/headers/__tests__/HeaderGenerator.test.ts +87 -59
  98. package/src/transpiler/output/headers/__tests__/HeaderGeneratorUtils.test.ts +57 -58
  99. package/src/transpiler/output/headers/adapters/HeaderSymbolAdapter.ts +222 -0
  100. package/src/transpiler/output/headers/adapters/__tests__/HeaderSymbolAdapter.test.ts +538 -0
  101. package/src/transpiler/output/headers/types/IGroupedSymbols.ts +8 -8
  102. package/src/transpiler/output/headers/types/IHeaderSymbol.ts +62 -0
  103. package/src/transpiler/state/CodeGenState.ts +20 -33
  104. package/src/transpiler/state/SymbolRegistry.ts +181 -0
  105. package/src/transpiler/{types → state}/TranspilerState.ts +1 -1
  106. package/src/transpiler/state/__tests__/CodeGenState.test.ts +67 -59
  107. package/src/transpiler/state/__tests__/SymbolRegistry.test.ts +249 -0
  108. package/src/transpiler/{types → state}/__tests__/TranspilerState.test.ts +1 -1
  109. package/src/transpiler/types/ICachedFileEntry.ts +1 -1
  110. package/src/transpiler/types/IConflict.ts +14 -0
  111. package/src/transpiler/types/IPipelineInput.ts +0 -3
  112. package/src/transpiler/types/ISerializedSymbol.ts +11 -0
  113. package/src/transpiler/types/TPrimitiveKind.ts +20 -0
  114. package/src/transpiler/types/TType.ts +103 -0
  115. package/src/transpiler/types/TVisibility.ts +6 -0
  116. package/src/transpiler/types/symbol-kinds/TSymbolKind.ts +10 -0
  117. package/src/transpiler/types/symbol-kinds/TSymbolKindC.ts +12 -0
  118. package/src/transpiler/types/symbol-kinds/TSymbolKindCNext.ts +16 -0
  119. package/src/transpiler/types/symbol-kinds/TSymbolKindCpp.ts +14 -0
  120. package/src/transpiler/types/symbols/IBaseSymbol.ts +31 -0
  121. package/src/transpiler/{logic/symbols/types → types/symbols}/IBitmapFieldInfo.ts +2 -2
  122. package/src/transpiler/types/symbols/IBitmapSymbol.ts +21 -0
  123. package/src/transpiler/{logic/symbols/types → types/symbols}/IEnumSymbol.ts +5 -6
  124. package/src/transpiler/types/symbols/IFieldInfo.ts +26 -0
  125. package/src/transpiler/types/symbols/IFunctionSymbol.ts +30 -0
  126. package/src/transpiler/types/symbols/IParameterInfo.ts +26 -0
  127. package/src/transpiler/{logic/symbols/types → types/symbols}/IRegisterMemberInfo.ts +4 -4
  128. package/src/transpiler/types/symbols/IRegisterSymbol.ts +18 -0
  129. package/src/transpiler/types/symbols/IScopeSymbol.ts +32 -0
  130. package/src/transpiler/{logic/symbols/types → types/symbols}/IStructFieldInfo.ts +2 -1
  131. package/src/transpiler/types/symbols/IStructSymbol.ts +15 -0
  132. package/src/transpiler/types/symbols/IVariableSymbol.ts +30 -0
  133. package/src/transpiler/types/symbols/SymbolGuards.ts +43 -0
  134. package/src/transpiler/types/symbols/TAnySymbol.ts +22 -0
  135. package/src/transpiler/types/symbols/TSymbol.ts +32 -0
  136. package/src/transpiler/types/symbols/__tests__/IBaseSymbol.test.ts +56 -0
  137. package/src/transpiler/types/symbols/__tests__/SymbolGuards.test.ts +57 -0
  138. package/src/transpiler/types/symbols/c/ICBaseSymbol.ts +28 -0
  139. package/src/transpiler/types/symbols/c/ICEnumMemberSymbol.ts +17 -0
  140. package/src/transpiler/types/symbols/c/ICEnumSymbol.ts +17 -0
  141. package/src/transpiler/types/symbols/c/ICFieldInfo.ts +16 -0
  142. package/src/transpiler/types/symbols/c/ICFunctionSymbol.ts +21 -0
  143. package/src/transpiler/types/symbols/c/ICParameterInfo.ts +19 -0
  144. package/src/transpiler/types/symbols/c/ICStructSymbol.ts +21 -0
  145. package/src/transpiler/types/symbols/c/ICTypedefSymbol.ts +14 -0
  146. package/src/transpiler/types/symbols/c/ICVariableSymbol.ts +26 -0
  147. package/src/transpiler/types/symbols/c/TCSymbol.ts +26 -0
  148. package/src/transpiler/types/symbols/cpp/ICppBaseSymbol.ts +31 -0
  149. package/src/transpiler/types/symbols/cpp/ICppClassSymbol.ts +15 -0
  150. package/src/transpiler/types/symbols/cpp/ICppEnumMemberSymbol.ts +14 -0
  151. package/src/transpiler/types/symbols/cpp/ICppEnumSymbol.ts +14 -0
  152. package/src/transpiler/types/symbols/cpp/ICppFieldInfo.ts +16 -0
  153. package/src/transpiler/types/symbols/cpp/ICppFunctionSymbol.ts +21 -0
  154. package/src/transpiler/types/symbols/cpp/ICppNamespaceSymbol.ts +11 -0
  155. package/src/transpiler/types/symbols/cpp/ICppParameterInfo.ts +19 -0
  156. package/src/transpiler/types/symbols/cpp/ICppStructSymbol.ts +16 -0
  157. package/src/transpiler/types/symbols/cpp/ICppTypeAliasSymbol.ts +14 -0
  158. package/src/transpiler/types/symbols/cpp/ICppVariableSymbol.ts +23 -0
  159. package/src/transpiler/types/symbols/cpp/TCppSymbol.ts +30 -0
  160. package/src/utils/CppNamespaceUtils.ts +3 -4
  161. package/src/utils/FunctionUtils.ts +92 -0
  162. package/src/utils/ParameterUtils.ts +55 -0
  163. package/src/utils/PrimitiveKindUtils.ts +33 -0
  164. package/src/utils/ScopeUtils.ts +105 -0
  165. package/src/utils/TTypeUtils.ts +159 -0
  166. package/src/utils/TypeResolver.ts +132 -0
  167. package/src/utils/__tests__/CppNamespaceUtils.test.ts +92 -99
  168. package/src/utils/__tests__/FunctionUtils.test.ts +284 -0
  169. package/src/utils/__tests__/ParameterUtils.test.ts +174 -0
  170. package/src/utils/__tests__/PrimitiveKindUtils.test.ts +59 -0
  171. package/src/utils/__tests__/ScopeUtils.test.ts +53 -0
  172. package/src/utils/__tests__/TTypeUtils.test.ts +245 -0
  173. package/src/utils/__tests__/TypeResolver.test.ts +332 -0
  174. package/src/utils/cache/CacheManager.ts +91 -50
  175. package/src/utils/cache/__tests__/CacheManager.test.ts +180 -114
  176. package/src/transpiler/logic/symbols/AutoConstUpdater.ts +0 -93
  177. package/src/transpiler/logic/symbols/CSymbolCollector.ts +0 -648
  178. package/src/transpiler/logic/symbols/CppSymbolCollector.ts +0 -874
  179. package/src/transpiler/logic/symbols/SymbolCollectorContext.ts +0 -68
  180. package/src/transpiler/logic/symbols/__tests__/AutoConstUpdater.test.ts +0 -418
  181. package/src/transpiler/logic/symbols/__tests__/CSymbolCollector.test.ts +0 -685
  182. package/src/transpiler/logic/symbols/__tests__/CppSymbolCollector.test.ts +0 -1146
  183. package/src/transpiler/logic/symbols/__tests__/SymbolCollectorContext.test.ts +0 -290
  184. package/src/transpiler/logic/symbols/__tests__/cTestHelpers.ts +0 -43
  185. package/src/transpiler/logic/symbols/__tests__/cppTestHelpers.ts +0 -40
  186. package/src/transpiler/logic/symbols/cnext/__tests__/TSymbolAdapter.test.ts +0 -595
  187. package/src/transpiler/logic/symbols/cnext/adapters/TSymbolAdapter.ts +0 -345
  188. package/src/transpiler/logic/symbols/types/IBaseSymbol.ts +0 -27
  189. package/src/transpiler/logic/symbols/types/IBitmapSymbol.ts +0 -23
  190. package/src/transpiler/logic/symbols/types/ICollectorContext.ts +0 -19
  191. package/src/transpiler/logic/symbols/types/IConflict.ts +0 -20
  192. package/src/transpiler/logic/symbols/types/IFieldInfo.ts +0 -18
  193. package/src/transpiler/logic/symbols/types/IFunctionSymbol.ts +0 -25
  194. package/src/transpiler/logic/symbols/types/IParameterInfo.ts +0 -24
  195. package/src/transpiler/logic/symbols/types/IRegisterSymbol.ts +0 -20
  196. package/src/transpiler/logic/symbols/types/IScopeSymbol.ts +0 -19
  197. package/src/transpiler/logic/symbols/types/IStructSymbol.ts +0 -16
  198. package/src/transpiler/logic/symbols/types/IVariableSymbol.ts +0 -30
  199. package/src/transpiler/logic/symbols/types/TSymbol.ts +0 -36
  200. package/src/transpiler/logic/symbols/types/__tests__/SymbolGuards.test.ts +0 -244
  201. package/src/transpiler/logic/symbols/types/typeGuards.ts +0 -44
  202. package/src/utils/types/ESymbolKind.ts +0 -19
  203. package/src/utils/types/ISymbol.ts +0 -64
  204. /package/src/transpiler/{types → constants}/BITMAP_BACKING_TYPE.ts +0 -0
  205. /package/src/transpiler/{types → constants}/BITMAP_SIZE.ts +0 -0
@@ -0,0 +1,222 @@
1
+ /**
2
+ * HeaderSymbolAdapter - Converts TSymbol to IHeaderSymbol.
3
+ *
4
+ * ADR-055 Phase 7: This adapter converts the TSymbol discriminated union
5
+ * to IHeaderSymbol for header generation.
6
+ */
7
+
8
+ import TSymbol from "../../../types/symbols/TSymbol";
9
+ import IHeaderSymbol from "../types/IHeaderSymbol";
10
+ import IParameterSymbol from "../../../../utils/types/IParameterSymbol";
11
+ import TypeResolver from "../../../../utils/TypeResolver";
12
+ import SymbolNameUtils from "../../../logic/symbols/cnext/utils/SymbolNameUtils";
13
+
14
+ /**
15
+ * Adapter to convert TSymbol to IHeaderSymbol
16
+ */
17
+ class HeaderSymbolAdapter {
18
+ /**
19
+ * Convert a TSymbol to IHeaderSymbol
20
+ */
21
+ static fromTSymbol(symbol: TSymbol): IHeaderSymbol {
22
+ switch (symbol.kind) {
23
+ case "function":
24
+ return HeaderSymbolAdapter.convertFunction(symbol);
25
+ case "variable":
26
+ return HeaderSymbolAdapter.convertVariable(symbol);
27
+ case "struct":
28
+ return HeaderSymbolAdapter.convertStruct(symbol);
29
+ case "enum":
30
+ return HeaderSymbolAdapter.convertEnum(symbol);
31
+ case "bitmap":
32
+ return HeaderSymbolAdapter.convertBitmap(symbol);
33
+ case "register":
34
+ return HeaderSymbolAdapter.convertRegister(symbol);
35
+ case "scope":
36
+ return HeaderSymbolAdapter.convertScope(symbol);
37
+ }
38
+ }
39
+
40
+ /**
41
+ * Convert an array of TSymbols to IHeaderSymbols
42
+ */
43
+ static fromTSymbols(symbols: TSymbol[]): IHeaderSymbol[] {
44
+ return symbols.map((s) => HeaderSymbolAdapter.fromTSymbol(s));
45
+ }
46
+
47
+ // ========================================================================
48
+ // Private conversion methods for each TSymbol kind
49
+ // ========================================================================
50
+
51
+ private static convertFunction(
52
+ func: import("../../../types/symbols/IFunctionSymbol").default,
53
+ ): IHeaderSymbol {
54
+ // Convert TType return type to string
55
+ const returnTypeStr = TypeResolver.getTypeName(func.returnType);
56
+
57
+ // Get mangled name (scope-prefixed)
58
+ const mangledName = SymbolNameUtils.getMangledName(func);
59
+ const isGlobal = func.scope.name === "";
60
+
61
+ // Convert parameters to IParameterSymbol[]
62
+ const parameters: IParameterSymbol[] = func.parameters.map((p) => ({
63
+ name: p.name,
64
+ type: TypeResolver.getTypeName(p.type),
65
+ isConst: p.isConst,
66
+ isArray: p.isArray,
67
+ arrayDimensions: p.arrayDimensions?.map((d) =>
68
+ typeof d === "number" ? String(d) : d,
69
+ ),
70
+ isAutoConst: p.isAutoConst,
71
+ }));
72
+
73
+ // Build signature
74
+ const paramTypes = func.parameters.map((p) =>
75
+ TypeResolver.getTypeName(p.type),
76
+ );
77
+ const signature = `${returnTypeStr} ${mangledName}(${paramTypes.join(", ")})`;
78
+
79
+ return {
80
+ name: mangledName,
81
+ kind: "function",
82
+ type: returnTypeStr,
83
+ isExported: func.isExported,
84
+ parameters,
85
+ signature,
86
+ parent: isGlobal ? undefined : func.scope.name,
87
+ sourceFile: func.sourceFile,
88
+ sourceLine: func.sourceLine,
89
+ };
90
+ }
91
+
92
+ private static convertVariable(
93
+ variable: import("../../../types/symbols/IVariableSymbol").default,
94
+ ): IHeaderSymbol {
95
+ // Get mangled name (scope-prefixed)
96
+ const mangledName = SymbolNameUtils.getMangledName(variable);
97
+ const isGlobal = variable.scope.name === "";
98
+
99
+ // Convert TType to string
100
+ const typeStr = TypeResolver.getTypeName(variable.type);
101
+
102
+ // Convert dimensions to strings and resolve qualified enum access
103
+ const arrayDimensions = variable.arrayDimensions?.map((d) =>
104
+ typeof d === "number"
105
+ ? String(d)
106
+ : HeaderSymbolAdapter.resolveArrayDimension(d),
107
+ );
108
+
109
+ return {
110
+ name: mangledName,
111
+ kind: "variable",
112
+ type: typeStr,
113
+ isExported: variable.isExported,
114
+ isConst: variable.isConst,
115
+ isAtomic: variable.isAtomic,
116
+ isArray: variable.isArray,
117
+ arrayDimensions,
118
+ parent: isGlobal ? undefined : variable.scope.name,
119
+ sourceFile: variable.sourceFile,
120
+ sourceLine: variable.sourceLine,
121
+ };
122
+ }
123
+
124
+ private static convertStruct(
125
+ struct: import("../../../types/symbols/IStructSymbol").default,
126
+ ): IHeaderSymbol {
127
+ // Get mangled name (scope-prefixed)
128
+ const mangledName = SymbolNameUtils.getMangledName(struct);
129
+ const isGlobal = struct.scope.name === "";
130
+
131
+ return {
132
+ name: mangledName,
133
+ kind: "struct",
134
+ isExported: struct.isExported,
135
+ parent: isGlobal ? undefined : struct.scope.name,
136
+ sourceFile: struct.sourceFile,
137
+ sourceLine: struct.sourceLine,
138
+ };
139
+ }
140
+
141
+ private static convertEnum(
142
+ enumSym: import("../../../types/symbols/IEnumSymbol").default,
143
+ ): IHeaderSymbol {
144
+ // Get mangled name (scope-prefixed)
145
+ const mangledName = SymbolNameUtils.getMangledName(enumSym);
146
+ const isGlobal = enumSym.scope.name === "";
147
+
148
+ return {
149
+ name: mangledName,
150
+ kind: "enum",
151
+ isExported: enumSym.isExported,
152
+ parent: isGlobal ? undefined : enumSym.scope.name,
153
+ sourceFile: enumSym.sourceFile,
154
+ sourceLine: enumSym.sourceLine,
155
+ };
156
+ }
157
+
158
+ private static convertBitmap(
159
+ bitmap: import("../../../types/symbols/IBitmapSymbol").default,
160
+ ): IHeaderSymbol {
161
+ // Get mangled name (scope-prefixed)
162
+ const mangledName = SymbolNameUtils.getMangledName(bitmap);
163
+ const isGlobal = bitmap.scope.name === "";
164
+
165
+ return {
166
+ name: mangledName,
167
+ kind: "bitmap",
168
+ type: bitmap.backingType,
169
+ isExported: bitmap.isExported,
170
+ parent: isGlobal ? undefined : bitmap.scope.name,
171
+ sourceFile: bitmap.sourceFile,
172
+ sourceLine: bitmap.sourceLine,
173
+ };
174
+ }
175
+
176
+ private static convertRegister(
177
+ register: import("../../../types/symbols/IRegisterSymbol").default,
178
+ ): IHeaderSymbol {
179
+ // Get mangled name (scope-prefixed)
180
+ const mangledName = SymbolNameUtils.getMangledName(register);
181
+ const isGlobal = register.scope.name === "";
182
+
183
+ return {
184
+ name: mangledName,
185
+ kind: "register",
186
+ isExported: register.isExported,
187
+ parent: isGlobal ? undefined : register.scope.name,
188
+ sourceFile: register.sourceFile,
189
+ sourceLine: register.sourceLine,
190
+ };
191
+ }
192
+
193
+ private static convertScope(
194
+ scope: import("../../../types/symbols/IScopeSymbol").default,
195
+ ): IHeaderSymbol {
196
+ return {
197
+ name: scope.name,
198
+ kind: "scope",
199
+ isExported: scope.isExported,
200
+ sourceFile: scope.sourceFile,
201
+ sourceLine: scope.sourceLine,
202
+ };
203
+ }
204
+
205
+ /**
206
+ * Convert an array dimension string to C-compatible format.
207
+ * Converts qualified enum access (e.g., "EColor.COUNT") to C-style ("EColor_COUNT").
208
+ * @param dim - The dimension string, may contain qualified enum access
209
+ * @returns C-compatible dimension string with dots replaced by underscores
210
+ * @example resolveArrayDimension("EColor.COUNT") => "EColor_COUNT"
211
+ * @example resolveArrayDimension("10") => "10"
212
+ */
213
+ private static resolveArrayDimension(dim: string): string {
214
+ // Qualified enum access (e.g., "EColor.COUNT") - convert dots to underscores
215
+ if (dim.includes(".")) {
216
+ return dim.replaceAll(".", "_");
217
+ }
218
+ return dim;
219
+ }
220
+ }
221
+
222
+ export default HeaderSymbolAdapter;