c-next 0.1.70 → 0.1.71

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 (204) 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 +173 -60
  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 +676 -258
  13. package/src/transpiler/logic/symbols/SymbolUtils.ts +2 -2
  14. package/src/transpiler/logic/symbols/__tests__/SymbolTable.test.ts +290 -782
  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/ISerializedSymbol.ts +11 -0
  112. package/src/transpiler/types/TPrimitiveKind.ts +20 -0
  113. package/src/transpiler/types/TType.ts +103 -0
  114. package/src/transpiler/types/TVisibility.ts +6 -0
  115. package/src/transpiler/types/symbol-kinds/TSymbolKind.ts +10 -0
  116. package/src/transpiler/types/symbol-kinds/TSymbolKindC.ts +12 -0
  117. package/src/transpiler/types/symbol-kinds/TSymbolKindCNext.ts +16 -0
  118. package/src/transpiler/types/symbol-kinds/TSymbolKindCpp.ts +14 -0
  119. package/src/transpiler/types/symbols/IBaseSymbol.ts +31 -0
  120. package/src/transpiler/{logic/symbols/types → types/symbols}/IBitmapFieldInfo.ts +2 -2
  121. package/src/transpiler/types/symbols/IBitmapSymbol.ts +21 -0
  122. package/src/transpiler/{logic/symbols/types → types/symbols}/IEnumSymbol.ts +5 -6
  123. package/src/transpiler/types/symbols/IFieldInfo.ts +26 -0
  124. package/src/transpiler/types/symbols/IFunctionSymbol.ts +30 -0
  125. package/src/transpiler/types/symbols/IParameterInfo.ts +26 -0
  126. package/src/transpiler/{logic/symbols/types → types/symbols}/IRegisterMemberInfo.ts +4 -4
  127. package/src/transpiler/types/symbols/IRegisterSymbol.ts +18 -0
  128. package/src/transpiler/types/symbols/IScopeSymbol.ts +32 -0
  129. package/src/transpiler/{logic/symbols/types → types/symbols}/IStructFieldInfo.ts +2 -1
  130. package/src/transpiler/types/symbols/IStructSymbol.ts +15 -0
  131. package/src/transpiler/types/symbols/IVariableSymbol.ts +30 -0
  132. package/src/transpiler/types/symbols/SymbolGuards.ts +43 -0
  133. package/src/transpiler/types/symbols/TAnySymbol.ts +22 -0
  134. package/src/transpiler/types/symbols/TSymbol.ts +32 -0
  135. package/src/transpiler/types/symbols/__tests__/IBaseSymbol.test.ts +56 -0
  136. package/src/transpiler/types/symbols/__tests__/SymbolGuards.test.ts +57 -0
  137. package/src/transpiler/types/symbols/c/ICBaseSymbol.ts +28 -0
  138. package/src/transpiler/types/symbols/c/ICEnumMemberSymbol.ts +17 -0
  139. package/src/transpiler/types/symbols/c/ICEnumSymbol.ts +17 -0
  140. package/src/transpiler/types/symbols/c/ICFieldInfo.ts +16 -0
  141. package/src/transpiler/types/symbols/c/ICFunctionSymbol.ts +21 -0
  142. package/src/transpiler/types/symbols/c/ICParameterInfo.ts +19 -0
  143. package/src/transpiler/types/symbols/c/ICStructSymbol.ts +21 -0
  144. package/src/transpiler/types/symbols/c/ICTypedefSymbol.ts +14 -0
  145. package/src/transpiler/types/symbols/c/ICVariableSymbol.ts +26 -0
  146. package/src/transpiler/types/symbols/c/TCSymbol.ts +26 -0
  147. package/src/transpiler/types/symbols/cpp/ICppBaseSymbol.ts +31 -0
  148. package/src/transpiler/types/symbols/cpp/ICppClassSymbol.ts +15 -0
  149. package/src/transpiler/types/symbols/cpp/ICppEnumMemberSymbol.ts +14 -0
  150. package/src/transpiler/types/symbols/cpp/ICppEnumSymbol.ts +14 -0
  151. package/src/transpiler/types/symbols/cpp/ICppFieldInfo.ts +16 -0
  152. package/src/transpiler/types/symbols/cpp/ICppFunctionSymbol.ts +21 -0
  153. package/src/transpiler/types/symbols/cpp/ICppNamespaceSymbol.ts +11 -0
  154. package/src/transpiler/types/symbols/cpp/ICppParameterInfo.ts +19 -0
  155. package/src/transpiler/types/symbols/cpp/ICppStructSymbol.ts +16 -0
  156. package/src/transpiler/types/symbols/cpp/ICppTypeAliasSymbol.ts +14 -0
  157. package/src/transpiler/types/symbols/cpp/ICppVariableSymbol.ts +23 -0
  158. package/src/transpiler/types/symbols/cpp/TCppSymbol.ts +30 -0
  159. package/src/utils/CppNamespaceUtils.ts +3 -4
  160. package/src/utils/FunctionUtils.ts +92 -0
  161. package/src/utils/ParameterUtils.ts +55 -0
  162. package/src/utils/PrimitiveKindUtils.ts +33 -0
  163. package/src/utils/ScopeUtils.ts +105 -0
  164. package/src/utils/TTypeUtils.ts +159 -0
  165. package/src/utils/TypeResolver.ts +132 -0
  166. package/src/utils/__tests__/CppNamespaceUtils.test.ts +92 -99
  167. package/src/utils/__tests__/FunctionUtils.test.ts +284 -0
  168. package/src/utils/__tests__/ParameterUtils.test.ts +174 -0
  169. package/src/utils/__tests__/PrimitiveKindUtils.test.ts +59 -0
  170. package/src/utils/__tests__/ScopeUtils.test.ts +53 -0
  171. package/src/utils/__tests__/TTypeUtils.test.ts +245 -0
  172. package/src/utils/__tests__/TypeResolver.test.ts +332 -0
  173. package/src/utils/cache/CacheManager.ts +91 -50
  174. package/src/utils/cache/__tests__/CacheManager.test.ts +180 -114
  175. package/src/transpiler/logic/symbols/AutoConstUpdater.ts +0 -93
  176. package/src/transpiler/logic/symbols/CSymbolCollector.ts +0 -648
  177. package/src/transpiler/logic/symbols/CppSymbolCollector.ts +0 -874
  178. package/src/transpiler/logic/symbols/SymbolCollectorContext.ts +0 -68
  179. package/src/transpiler/logic/symbols/__tests__/AutoConstUpdater.test.ts +0 -418
  180. package/src/transpiler/logic/symbols/__tests__/CSymbolCollector.test.ts +0 -685
  181. package/src/transpiler/logic/symbols/__tests__/CppSymbolCollector.test.ts +0 -1146
  182. package/src/transpiler/logic/symbols/__tests__/SymbolCollectorContext.test.ts +0 -290
  183. package/src/transpiler/logic/symbols/__tests__/cTestHelpers.ts +0 -43
  184. package/src/transpiler/logic/symbols/__tests__/cppTestHelpers.ts +0 -40
  185. package/src/transpiler/logic/symbols/cnext/__tests__/TSymbolAdapter.test.ts +0 -595
  186. package/src/transpiler/logic/symbols/cnext/adapters/TSymbolAdapter.ts +0 -345
  187. package/src/transpiler/logic/symbols/types/IBaseSymbol.ts +0 -27
  188. package/src/transpiler/logic/symbols/types/IBitmapSymbol.ts +0 -23
  189. package/src/transpiler/logic/symbols/types/ICollectorContext.ts +0 -19
  190. package/src/transpiler/logic/symbols/types/IConflict.ts +0 -20
  191. package/src/transpiler/logic/symbols/types/IFieldInfo.ts +0 -18
  192. package/src/transpiler/logic/symbols/types/IFunctionSymbol.ts +0 -25
  193. package/src/transpiler/logic/symbols/types/IParameterInfo.ts +0 -24
  194. package/src/transpiler/logic/symbols/types/IRegisterSymbol.ts +0 -20
  195. package/src/transpiler/logic/symbols/types/IScopeSymbol.ts +0 -19
  196. package/src/transpiler/logic/symbols/types/IStructSymbol.ts +0 -16
  197. package/src/transpiler/logic/symbols/types/IVariableSymbol.ts +0 -30
  198. package/src/transpiler/logic/symbols/types/TSymbol.ts +0 -36
  199. package/src/transpiler/logic/symbols/types/__tests__/SymbolGuards.test.ts +0 -244
  200. package/src/transpiler/logic/symbols/types/typeGuards.ts +0 -44
  201. package/src/utils/types/ESymbolKind.ts +0 -19
  202. package/src/utils/types/ISymbol.ts +0 -64
  203. /package/src/transpiler/{types → constants}/BITMAP_BACKING_TYPE.ts +0 -0
  204. /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;