crashanalysercmd/PerfToolsSharedLibraries/Engine/SymbianUtils/XRef/XRefIdentiferExtractor.cs
author Matti Laitinen <matti.t.laitinen@nokia.com>
Thu, 11 Feb 2010 15:50:58 +0200
changeset 0 818e61de6cd1
permissions -rw-r--r--
Add initial version of Crash Analyser cmdline under EPL
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     1
/*
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     3
* All rights reserved.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     4
* This component and the accompanying materials are made available
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     6
* which accompanies this distribution, and is available
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     8
*
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     9
* Initial Contributors:
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    11
*
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    12
* Contributors:
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    13
* 
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    14
* Description:
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    15
*
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    16
*/
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    17
using System;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    18
using System.Collections.Generic;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    19
using System.Text;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    20
using SymbianUtils.Strings;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    21
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    22
namespace SymbianUtils.XRef
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    23
{
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    24
    public class XRefIdentiferExtractor
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    25
    {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    26
        #region Constructors
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    27
        public XRefIdentiferExtractor( string aFunction )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    28
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    29
            iIdentifiers = ExtractSearchableElements( aFunction );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    30
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    31
        #endregion
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    32
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    33
        #region Properties
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    34
        public List<XRefIdentifer> Identifiers
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    35
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    36
            get { return iIdentifiers; }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    37
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    38
        #endregion
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    39
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    40
        #region Internal methods
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    41
        private static bool ContainsParameters( string aText )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    42
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    43
            // Search initiall for '(' - if that is found, then
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    44
            // we should also find a closing bracket.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    45
            bool parameters = false;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    46
            int openingBracketPos = aText.IndexOf( "(" );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    47
            //
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    48
            if ( openingBracketPos > 0 )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    49
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    50
                // Should also be a closing bracket and it should
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    51
                // appear after the opening bracket
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    52
                int closingBracketPos = aText.LastIndexOf( ")" );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    53
                parameters = ( closingBracketPos > openingBracketPos );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    54
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    55
            //
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    56
            return parameters;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    57
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    58
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    59
        private static string ExtractParameters( ref string aText )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    60
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    61
            const string KOperatorChevronText = "operator <<";
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    62
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    63
            // DoAppendFormatList<TDes16, (int)2>(T1&, const T3&, std::__va_list, T2*)
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    64
            // DoAppendFormatList<TDes16, (int)2>(T1&, TBuf<(int)256>, std::__va_list, T2*)
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    65
            // Method<TDes16>::Wibble( something )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    66
            // Method::Wibble( RPointerArray<HBufC> )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    67
            // RTest::operator ()(int, int, const unsigned short*)
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    68
            // TDesC16::Left(int) const
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    69
            // CObjectCon::AtL(int) const
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    70
            // User::Panic(const TDesC16&, int)
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    71
            // operator <<(RWriteStream&, const unsigned char&)
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    72
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    73
            // Handle special case of "operator <<" confusing matters
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    74
            string workingText = aText;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    75
            int operatorOpeningChevronPos = aText.IndexOf( KOperatorChevronText );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    76
            if ( operatorOpeningChevronPos >= 0 )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    77
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    78
                aText = aText.Substring( 0, operatorOpeningChevronPos + KOperatorChevronText.Length );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    79
                workingText = workingText.Substring( operatorOpeningChevronPos + KOperatorChevronText.Length );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    80
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    81
            else
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    82
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    83
                aText = string.Empty;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    84
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    85
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    86
            string ret = string.Empty;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    87
            //
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    88
            int closingPos = 0;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    89
            int openingPos = 0;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    90
            int templatePos = 0;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    91
            //
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    92
            while ( openingPos >= 0 )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    93
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    94
                if ( templatePos >= 0 )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    95
                    templatePos = workingText.IndexOf( "<", templatePos );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    96
                openingPos = workingText.IndexOf( "(", openingPos );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    97
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    98
                if ( templatePos >= 0 && templatePos < openingPos )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    99
                {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   100
                    // Template region appears before the next bracket. Skip
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   101
                    // over all characters until we hit the end of the template
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   102
                    // section
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   103
                    int endingPos = templatePos;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   104
                    StringParsingUtils.SkipToEndOfSection( ref workingText, ref endingPos, '<', '>' );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   105
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   106
                    if ( endingPos < 0 )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   107
                    {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   108
                        // Matching closing brace was never found - dealing with operator << ?
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   109
                        templatePos = -1;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   110
                    }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   111
                    else
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   112
                    {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   113
                        // Something like DoAppendFormatList<TDes16, (int)2>(T1&, const T3&, std::__va_list, T2*) ???
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   114
                        templatePos = endingPos;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   115
                        openingPos = endingPos;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   116
                    }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   117
                }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   118
                else if ( openingPos >= 0 )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   119
                {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   120
                    // Skipped over any template nonsense. Work backward from the end 
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   121
                    // in order to locate start of parameters.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   122
                    closingPos = workingText.LastIndexOf( ')' );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   123
                    openingPos = closingPos;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   124
                    StringParsingUtils.SkipToBeginningOfSection( ref workingText, ref openingPos, '(', ')' );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   125
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   126
                    string parameters = workingText.Substring( openingPos + 1, ( closingPos - openingPos ) - 1 ).Trim();
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   127
                    ret = parameters;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   128
                    workingText = workingText.Substring( 0, openingPos + 1 ) + workingText.Substring( closingPos );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   129
                    aText = aText + workingText;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   130
                    break;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   131
                }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   132
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   133
            //
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   134
            return ret;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   135
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   136
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   137
        private static void SplitParameters( string aParams, ref List<string> aEntries )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   138
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   139
            /*
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   140
             * TPtrC16::TPtrC16(const unsigned short*) 
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   141
             * TPtrC16::TPtrC16(const TDesC16&) 
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   142
             * UserHal::MemoryInfo(TDes8&) 
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   143
             * RHandleBase::Close() 
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   144
             * TBufCBase16::Copy(const TDesC16&, int) 
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   145
             * CBufFlat::NewL(int) 
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   146
             * TBufCBase16::TBufCBase16() 
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   147
             * CServer2::RunL() 
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   148
             * CServer2::StartL(const TDesC16&) 
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   149
             * CServer2::DoCancel() 
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   150
             * CServer2::RunError(int) 
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   151
             * CServer2::DoConnect(const RMessage2&) 
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   152
             * CServer2::CServer2__sub_object(int, CServer2::TServerType) 
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   153
             */
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   154
            string paramType;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   155
            while ( aParams.Length > 0 )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   156
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   157
                int commaPos = aParams.IndexOf( "," );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   158
                //
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   159
                paramType = aParams;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   160
                if ( commaPos > 0 )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   161
                {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   162
                    paramType = aParams.Substring( 0, commaPos ).Trim();
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   163
                    if ( commaPos < aParams.Length )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   164
                        aParams = aParams.Substring( commaPos + 1 ).Trim();
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   165
                    else
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   166
                        aParams = string.Empty;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   167
                }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   168
                else
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   169
                {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   170
                    // Everything was consumed
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   171
                    aParams = string.Empty;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   172
                }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   173
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   174
                // Add it
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   175
                aEntries.Add( paramType );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   176
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   177
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   178
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   179
        private static string[] IdentifyFurtherClassAndMethodInformation( string aEntry )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   180
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   181
            string[] classAndMethodData = aEntry.Split( new string[] { "::" }, StringSplitOptions.RemoveEmptyEntries );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   182
            return classAndMethodData;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   183
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   184
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   185
        private static List<XRefIdentifer> ExtractSearchableElements( string aFunction )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   186
        {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   187
            List<string> workingData = new List<string>();
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   188
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   189
            // See if this entry contains parameter data?
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   190
            if ( ContainsParameters( aFunction ) )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   191
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   192
                // This call modifies aFunction so that the parameters are removed
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   193
                string parameters = ExtractParameters( ref aFunction );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   194
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   195
                // Now we get the individual parameter elements from the arguments
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   196
                SplitParameters( parameters, ref workingData );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   197
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   198
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   199
            // Extract class & method names if present
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   200
            string[] classAndMethodData = aFunction.Split( new string[] { "::" }, StringSplitOptions.RemoveEmptyEntries );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   201
            if ( classAndMethodData.Length > 0 )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   202
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   203
                foreach ( string identifiedEntry in classAndMethodData )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   204
                {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   205
                    workingData.Add( identifiedEntry );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   206
                }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   207
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   208
            else
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   209
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   210
                // Not a class & method - so just take the entire text as a 
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   211
                // global function name
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   212
                workingData.Add( aFunction );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   213
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   214
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   215
            // Recursively check for any more class types, e.g. in the following entry:
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   216
            //
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   217
            // CServer2::CServer2__sub_object(int, CServer2::TServerType) 
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   218
            //
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   219
            // We also need to extract CServer2 and TServerType as individual elements
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   220
            for ( int i = workingData.Count - 1; i >= 0; i-- )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   221
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   222
                string entry = workingData[ i ];
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   223
                string[] furtherSplit = IdentifyFurtherClassAndMethodInformation( entry );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   224
                if ( furtherSplit != null && furtherSplit.Length > 1 )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   225
                {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   226
                    foreach ( string furtherEntry in furtherSplit )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   227
                    {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   228
                        workingData.Add( furtherEntry );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   229
                    }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   230
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   231
                    // Remove defunct entry
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   232
                    workingData.RemoveAt( i );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   233
                }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   234
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   235
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   236
            // Clean up phase
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   237
            List<string> cleanedEntries = new List<string>();
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   238
            foreach ( string identifiedEntry in workingData )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   239
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   240
                string entry = identifiedEntry;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   241
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   242
                // Now go through the identified entries and ensure they don't include
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   243
                // any pointer (*), reference (&) or bracketry.
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   244
                int pos = entry.IndexOfAny( new char[] { '*', '+', '&', '[', ']', '<', '>', '(', ')' } );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   245
                if ( pos >= 0 )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   246
                {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   247
                    entry = entry.Substring( 0, pos );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   248
                }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   249
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   250
                // Strip any reserved keywords
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   251
                if ( entry.Length > 0 )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   252
                {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   253
                    entry = entry.Replace( "const", string.Empty );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   254
                    entry = entry.Replace( "static", string.Empty );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   255
                    entry = entry.Replace( "public", string.Empty );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   256
                    entry = entry.Replace( "protected", string.Empty );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   257
                    entry = entry.Replace( "private", string.Empty );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   258
                    entry = entry.Replace( "__sub_object", string.Empty );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   259
                    //
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   260
                    if ( !cleanedEntries.Contains( entry ) )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   261
                    {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   262
                        cleanedEntries.Add( entry.Trim() );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   263
                    }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   264
                }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   265
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   266
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   267
            // Convert to XRefIdentifiers
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   268
            List<XRefIdentifer> finalEntries = new List<XRefIdentifer>();
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   269
            foreach ( string cleanedEntry in cleanedEntries )
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   270
            {
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   271
                XRefIdentifer item = new XRefIdentifer( cleanedEntry );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   272
                finalEntries.Add( item );
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   273
            }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   274
            //
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   275
            return finalEntries;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   276
        }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   277
        #endregion
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   278
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   279
        #region Data members
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   280
        private readonly List<XRefIdentifer> iIdentifiers;
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   281
        #endregion
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   282
    }
818e61de6cd1 Add initial version of Crash Analyser cmdline under EPL
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   283
}