From 8598af7ec9f645c006deb3d49a91c1221fa51a2f Mon Sep 17 00:00:00 2001 From: Rene Gollent Date: Sat, 13 Apr 2013 17:23:13 -0400 Subject: [PATCH] Rework parsing a bit to handle some cases better. Disable array parsing for now until creating array types works correctly. --- .../debugger/source_language/CppLanguage.cpp | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/apps/debugger/source_language/CppLanguage.cpp b/src/apps/debugger/source_language/CppLanguage.cpp index 249ef91169..e67a1637ab 100644 --- a/src/apps/debugger/source_language/CppLanguage.cpp +++ b/src/apps/debugger/source_language/CppLanguage.cpp @@ -45,15 +45,15 @@ CppLanguage::ParseTypeExpression(const BString &expression, parsedName.RemoveAll(" "); int32 modifierIndex = -1; - for (int32 i = parsedName.Length() - 1; i >= 0; i--) { - if (parsedName[i] == '*' || parsedName[i] == '&') - modifierIndex = i; - } + modifierIndex = parsedName.FindFirst('*'); + if (modifierIndex == -1) + modifierIndex = parsedName.FindFirst('&'); + if (modifierIndex == -1) + modifierIndex = parsedName.FindFirst('['); - if (modifierIndex >= 0) { - parsedName.CopyInto(baseTypeName, 0, modifierIndex); - parsedName.Remove(0, modifierIndex); - } else + if (modifierIndex >= 0) + parsedName.MoveInto(baseTypeName, 0, modifierIndex); + else baseTypeName = parsedName; modifierIndex = parsedName.FindFirst('['); @@ -111,6 +111,7 @@ CppLanguage::ParseTypeExpression(const BString &expression, _resultType = baseType; +#if 0 if (!arraySpecifier.IsEmpty()) { ArrayType* arrayType = NULL; @@ -140,6 +141,7 @@ CppLanguage::ParseTypeExpression(const BString &expression, _resultType = arrayType; } +#endif typeRef.Detach();