Skip to content

Commit 053edb1

Browse files
committed
Add support to variable with [] inside type
std::unique_ptr<int[]> variable;
1 parent 9c47f1d commit 053edb1

File tree

1 file changed

+22
-22
lines changed

1 file changed

+22
-22
lines changed

CppHeaderParser/CppHeaderParser.py

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1217,29 +1217,38 @@ def __init__(self, nameStack, doxygen, location, is_var=True, **kwargs):
12171217
else:
12181218
self["extern"] = False
12191219

1220+
if "=" in nameStack:
1221+
self["type"] = " ".join(nameStack[: nameStack.index("=") - 1])
1222+
self["name"] = nameStack[nameStack.index("=") - 1]
1223+
default = " ".join(nameStack[nameStack.index("=") + 1 :])
1224+
nameStack = nameStack[: nameStack.index("=")]
1225+
default = self._filter_name(default)
1226+
self["default"] = default
1227+
# backwards compat; deprecate camelCase in dicts
1228+
self["defaultValue"] = default
1229+
12201230
_stack_ = nameStack
1221-
if "[" in nameStack: # strip off array informatin
1222-
arrayStack = nameStack[nameStack.index("[") :]
1223-
if nameStack.count("[") > 1:
1231+
self["array"] = 0
1232+
while "]" in nameStack[-1]: # strip off array information
1233+
arrayPos = len(nameStack) - 1 - nameStack[::-1].index("[")
1234+
arrayStack = nameStack[arrayPos:]
1235+
if self["array"] == 1:
12241236
debug_print("Multi dimensional array")
12251237
debug_print("arrayStack=%s", arrayStack)
1226-
nums = [x for x in arrayStack if x.isdigit()]
1227-
# Calculate size by multiplying all dimensions
1228-
p = 1
1229-
for n in nums:
1230-
p *= int(n)
1238+
if len(arrayStack) == 3:
1239+
n = arrayStack[1]
12311240
# Multi dimensional array
1232-
self["array_size"] = p
1241+
if not "multi_dimensional_array_size" in self:
1242+
self["multi_dimensional_array_size"] = self["array_size"]
1243+
self["multi_dimensional_array_size"] += "x" + n
1244+
self["array_size"] = str(int(self["array_size"]) * int(n))
12331245
self["multi_dimensional_array"] = 1
1234-
self["multi_dimensional_array_size"] = "x".join(nums)
12351246
else:
12361247
debug_print("Array")
12371248
if len(arrayStack) == 3:
12381249
self["array_size"] = arrayStack[1]
1239-
nameStack = nameStack[: nameStack.index("[")]
1250+
nameStack = nameStack[:arrayPos]
12401251
self["array"] = 1
1241-
else:
1242-
self["array"] = 0
12431252
nameStack = self._name_stack_helper(nameStack)
12441253

12451254
if doxygen:
@@ -1268,15 +1277,6 @@ def __init__(self, nameStack, doxygen, location, is_var=True, **kwargs):
12681277
)
12691278
self["function_pointer"] = 1
12701279

1271-
elif "=" in nameStack:
1272-
self["type"] = " ".join(nameStack[: nameStack.index("=") - 1])
1273-
self["name"] = nameStack[nameStack.index("=") - 1]
1274-
default = " ".join(nameStack[nameStack.index("=") + 1 :])
1275-
default = self._filter_name(default)
1276-
self["default"] = default
1277-
# backwards compat; deprecate camelCase in dicts
1278-
self["defaultValue"] = default
1279-
12801280
elif (
12811281
is_fundamental(nameStack[-1])
12821282
or nameStack[-1] in [">", "<", ":", "."]

0 commit comments

Comments
 (0)