const kStateDefault = 0
const kStateName = 1
const kStateMeta = 2
const kStateArray = 3
dim results() as VariableDefinition
dim currentItem as new VariableDefinition()
dim chars() as string = mangledParams.split( "" )
dim hasType as boolean
dim state as integer
for i as integer = 0 to ubound( chars )
dim char as string = chars( i )
select case state
case kStateDefault
if char = "&" then
currentItem.isByref = True
elseif char = "A" then
state = kStateArray
else
if hasType then _
results.append( currentItem )
hasType = True
currentItem = new VariableDefinition()
currentItem.type = char
state = kStateMeta
end if
case kStateMeta
if char = "<" then
state = kStateName
elseif isNumeric( char ) then
currentItem.size = currentItem.size * 10 + val( char )
elseif strcomp( char, "A", 0 ) = 0 then
state = kStateArray
else
state = kStateDefault
i = i - 1
end if
case kStateName
if char = ">" then
state = kStateDefault
continue
end if
currentItem.className = currentItem.className + char
case kStateArray
if isNumeric( char ) then
currentItem.dimensions = currentItem.dimensions * 10 + val( char )
else
state = kStateDefault
i = i - 1
end if
end select
next
results.append( currentItem )
return results