Skip to content

Commit

Permalink
Add support to variable with [] inside type
Browse files Browse the repository at this point in the history
std::unique_ptr<int[]> variable;
  • Loading branch information
bansan85 committed May 13, 2024
1 parent 36357a0 commit a8a5c18
Showing 1 changed file with 22 additions and 22 deletions.
44 changes: 22 additions & 22 deletions CppHeaderParser/CppHeaderParser.py
Original file line number Diff line number Diff line change
Expand Up @@ -1217,29 +1217,38 @@ def __init__(self, nameStack, doxygen, location, is_var=True, **kwargs):
else:
self["extern"] = False

if "=" in nameStack:
self["type"] = " ".join(nameStack[: nameStack.index("=") - 1])
self["name"] = nameStack[nameStack.index("=") - 1]
default = " ".join(nameStack[nameStack.index("=") + 1 :])
nameStack = nameStack[: nameStack.index("=")]
default = self._filter_name(default)
self["default"] = default
# backwards compat; deprecate camelCase in dicts
self["defaultValue"] = default

_stack_ = nameStack
if "[" in nameStack: # strip off array informatin
arrayStack = nameStack[nameStack.index("[") :]
if nameStack.count("[") > 1:
self["array"] = 0
while "]" in nameStack[-1]: # strip off array information
arrayPos = len(nameStack) - 1 - nameStack[::-1].index("[")
arrayStack = nameStack[arrayPos:]
if self["array"] == 1:
debug_print("Multi dimensional array")
debug_print("arrayStack=%s", arrayStack)
nums = [x for x in arrayStack if x.isdigit()]
# Calculate size by multiplying all dimensions
p = 1
for n in nums:
p *= int(n)
if len(arrayStack) == 3:
n = arrayStack[1]
# Multi dimensional array
self["array_size"] = p
if not "multi_dimensional_array_size" in self:
self["multi_dimensional_array_size"] = self["array_size"]
self["multi_dimensional_array_size"] += "x" + n
self["array_size"] = str(int(self["array_size"]) * int(n))
self["multi_dimensional_array"] = 1
self["multi_dimensional_array_size"] = "x".join(nums)
else:
debug_print("Array")
if len(arrayStack) == 3:
self["array_size"] = arrayStack[1]
nameStack = nameStack[: nameStack.index("[")]
nameStack = nameStack[:arrayPos]
self["array"] = 1
else:
self["array"] = 0
nameStack = self._name_stack_helper(nameStack)

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

elif "=" in nameStack:
self["type"] = " ".join(nameStack[: nameStack.index("=") - 1])
self["name"] = nameStack[nameStack.index("=") - 1]
default = " ".join(nameStack[nameStack.index("=") + 1 :])
default = self._filter_name(default)
self["default"] = default
# backwards compat; deprecate camelCase in dicts
self["defaultValue"] = default

elif (
is_fundamental(nameStack[-1])
or nameStack[-1] in [">", "<", ":", "."]
Expand Down

0 comments on commit a8a5c18

Please sign in to comment.