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